目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

X

锁定的意思,提供的是ACID中,I方面的功能。需要配合UnDO+隔离级别一起来实现

InnoDB锁级别:行级锁

Next LOCK
GAP LOCK
悲观锁:
乐观锁:

需要排查锁的争用、锁等待、死锁

事务的隔离级别

影响到数据的读取,默认的级别是 RR模式.
transaction_isolation 隔离级别(参数)
负责的是,MVCC,读一致性问题
RU : 读未提交,可脏读,一般部议叙出现
RC : 读已提交,可能出现幻读,可以防止脏读.
RR : 可重复读,功能是防止"幻读"现象 ,利用的是undo的快照技术+GAP(间隙锁)+NextLock(下键锁)
SR : 可串行化,可以防止死锁,但是并发事务性能较差

RR级别:解决了 不可重复读问题+幻读的现象
不可重复读问题是由 undo的快照技术来解决。
幻读现象是由:MVCC+GAP+next-lock来解决。

# 查看事务隔离级别
mysql> select @@tx_isolation;
+-----------------+
| @@tx_isolation  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set, 1 warning (0.00 sec)

InnoDB核心参数

双一标准之一

innodb_flush_log_at_trx_commit=1

作用:
控制了redo buffer 刷写策略,是一个安全参数,是在5.6版本以上默认的参数
参数功能
1:每次事务提交,都会立即刷下redo到磁盘(redo buffer --每事务-->os buffer --每事务--磁盘)
0:表示当事务提交时,不立即做日志写入操作(redo buffer --每秒-->os buffer --每秒--磁盘)
2:每次事务提交引起写入文件系统缓存(redo buffer --每事务-->os buffer --每秒--磁盘)

Innodb_flush_method=(O_DIRECT, fdatasync)

作用:

控制了 redo buffer 和 data bufffer 刷写磁盘方式

最大安全模式:
innodb_flush_log_at_trx_commit=1
innodb_flush_method=O_DIRECT

最大性能模式:
innodb_flush_log_at_trx_commit=0
innodb_flush_method=fsync

关于redo设置

innodb_log_buffer_size= 128M 业务系统CPU压力有关
innodb_log_file_size=256 一般是log_buffer的1-2倍
innodb_log_files_in_group = 3 3-4组

innodb_buffer_pool_size

生产一般调整为物理内存的50%-80%左右(你的系统中只有一个mysql实例)


作者:Soulboy