珠规玉矩
夏天最让人欢喜,太阳火辣辣照射下来的夏日午后,穿一条短裤听摇滚边喝啤酒,简直美到天上去了。
MySQL 5.5 之前,MyISAM 引擎是 MySQL 的默认存储引擎,MySQL 5.5 版本之后,InnoDB 是 MySQL 的默认存储引擎。 (1)是否支持行级锁 MyISAM 只有表级锁,而 InnoDB 支持行级锁和表级锁,默认为行级锁。 具体的锁详情请参考阿Q的此篇文章:面试必备常见存储引擎与锁
在MySQL 5.7及之前的版本,自增值保存在内存里,并没有持久化; 唯一键冲突:插入数据时先将自增主键+1,然后插入数据时唯一键冲突,插入数据失败,但是未将自增主键改回; 事务回滚:和唯一键冲突类似,回滚操作时自增值也不回退,事实上,这么做的主要原因是为了提高性能。
redo log(重做日志)是InnoDB存储引擎独有的,它让MySQL拥有了崩溃恢复能力。 比如 MySQL 实例挂了或宕机了,重启时,InnoDB存储引擎会使用redo log恢复数据,保证数据的持久性与完整性。 更新表数据的时候,如果发现 Buffer Pool 里存在要更新的数据,就直接在 Buffer P
InnoDB 存储引擎为 redo log 的刷盘策略提供了 innodb_flush_log_at_trx_commit 参数,它支持三种策略 设置为0的时候,表示每次事务提交时不进行刷盘操作,只是保留在 redo log buffer中,mysql 崩溃会丢失1s的数据; 设置为1的时候,表示每次事务提交
硬盘上存储的 redo log 日志文件不只一个,而是以一个日志文件组的形式出现的,每个的redo日志文件大小都是一样的。 比如可以配置为一组4个文件,每个文件的大小是 1GB,整个 redo log 日志文件组可以记录4G的内容。 什么是 binlog binlog 是归档日志,属于 Server 层的日志,是一个
事务执行过程中,先把日志写到binlog cache,事务提交的时候,再把binlog cache写到binlog文件中。 因为一个事务的binlog不能被拆开,无论这个事务多大,也要确保一次性写入,所以系统会给每个线程分配一个块内存作为binlog cache。 我们可以通过binlog_cache_size参数