Mysql事务实战

前言 Mysql的事务机制,各类书籍博客上都讲了很多,八股文也基本都有,但是我属于不实践都搞不懂的笨蛋,所有本文来通过实践理解mysql的四个事务级别。 mysql安装(已经安装的可以跳过) 首先安装mysql,我使用的是Mac,安装mysql很简单。 brew install mysql 接着执行 brew services start mysql启动mysql 因为只是在本地测试,直接使用mysql -u root登录就可以 本文的目的是想要实践mysql的事务,为了更加直观的操作,所以不使用额外的客户端操作mysql,但是直接使用终端比较麻烦,所以我推荐安装mycli 在Mac上的安装也很简单,brew install mycli 这时就可以使用mycli -u root连接mysql了 测试数据准备 本文的测试数据使用官方的测试数据集, 按照readme文档,设置数据就好。 开始研究 首先执行select * from employees limit 10;看一下有那些数据。 ANSI SQL标准定义了4种隔离级别。 READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE READ UNCOMMITTED 如其名所描述,这种数据库隔离级别的特征肯定是读到uncommitted的数据。首先我们打开不同的终端,开启两个数据库连接。在两个数据库终端中设置当前会话的事务提交类型为READ UNCOMMITTED SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 接着在两个数据库连接中都开启事务 start transaction; 首先,我们在两个事务中都查询一下编号为10002的员工的性别。 select * from employees where emp_no = '10002'; 打开第三个终端,查询当前事务的状态。 SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G 当前,有两个事务,分别是281479414878104和28147941487731,他们的事务级别也都是READ UNCOMMITTE,值得注意的是trx_weight这个字段。InnoDB目前处理死锁的方式是将持有最少行级排他锁的事务回滚。为了解决死锁,InnoDB 选择一个小的权重的事务来回滚。...

May 29, 2024 · 1 min

Mysql主从复制安装

阅读前了解一下mariadb与mysql的关系 centos7使用二进制包安装mysql sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql cd /usr/local sudo tar zxvf /path/to/mysql-VERSION-OS.tar.gz sudo ln -s full-path-to-mysql-VERSION-OS mysql # 如果要删除软链接使用unlink mysql cd mysql sudo chown mysql:mysql -R /usr/local/mysql sudo chmod 755 /usr/local/mysql/ 修改/etc/my.cnf配置 [mysqld] bind-address=0.0.0.0 port=3306 user=mysql basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/tmp/mysql.sock log-error=/usr/local/mysql/data/mysql.err pid-file=/usr/local/mysql/data/mysql.pid #character config # character_set_server=utf8mb4 # symbolic-links=0 # #explicit_defaults_for_timestamp=true # # # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in [http://fedoraproject....

March 21, 2023 · 2 min