时间:2019-08-24 来源:原创/投稿/转载作者:管理员点击:
这就消除了以往重启实例自增列不连续的问题(这也可能形成了一个新的竞争点(盖国强会上提问InnoDB开发者))。
Btree索引被损坏。InnoDB会向REDO LOG中写入一个损坏标志。同时也会CHECKPOINT时将内存中损坏页的数据记录到存储引擎私有的系统表中。
这也就促成了恢复时。两边一致的情形。索引不可用,并不会造成实例起不来。这很大程度上降低了之前使用innodb_force_recovery和innodb_fast_shutdown的必要。
好处是通过减少客户端和服务器之间的通信流量,在单个memcached查询中获取多个键/值对的功能可以提高读取性能。
新的动态配置选项innodb_deadlock_detect可用于禁用死锁检测,默认打开。 在高并发系统上,当大量线程等待相同的锁时,死锁检测会导致速度下降。 有时,在死锁发生时,
禁用死锁检测并依赖innodb_lock_wait_timeout设置进行事务回滚可能更有效。记得之前版本遇到死锁会自动回滚。以下截图来自MySQL5.7,与8.0默认相同。
InnoDB使用自己的MySQL服务层的数据字典,不再保留自己的数据字典。有利于事务的原子性。
MySQL系统表和数据字典表现在创建在MySQL数据目录中名为mysql.ibd的单个InnoDB表空间文件中。
UNDO表空间数量可以在线修改。或者在实例重启时使用原本只能初始化之前设定的innodb_undo_tablespaces参数。
innodb_rollback_segments配置选项定义每个UNDO表空间的回滚段数量。以前,这是一个针对MySQL实例的一个全局设定,单个写。
这次的改变是,事务写撤销日志时可以并发写入。innodb_undo_logs被移除了。该参数代替。
控制INNODB BUFFER POOL预写,刷盘动作参数改变。我想应该是这些年来硬件的提升。
当系统不在线时,可以移除或者转存系统表空间到其他机器上。这对备份恢复又开辟一条路。必须是停机状态有点差强人意。
SDI(序列化字典信息)存在于除临时表空间和撤消表空间文件之外的所有InnoDB表空间文件中。 SDI数据的存在提供元数据冗余。
如果数据字典变得不可用,字典对象元数据可能从表空间文件中提取。 使用ibd2sdi工具执行SDI提取。
如下:其中SDI数据以JSON格式存储。这个工具,在线或者离线都可以使用。回头看看如何将这个json数据导入(MySQL高版本已经支持JSON)。