October 2014

MySQL 5.7: 为innodb引擎彻底移除thr_lock

在继MDL锁系统改为使用LOCK-FREE方式实现后,Server层又再5.7.5迎来重大改动:THR_LOCK被彻底移除,而是完全使用MDL锁来实现。 对应的change log entry: 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL 5.7: 为innodb引擎彻底移除thr_lock Post Footer automatically generated by wp-posturl plugin for wordpress.

MySQL5.7 : Metadata Lock关键类及函数

在MySQL5.7.4中,对Server层的Metadata Lock做了颠覆性的修改,在正常负载下几乎完全消除了MDL子系统部分的锁开销.   基于最新的MySQL5.7.5, 我们来看看MDL锁的具体实现思路。注意在5.7.5里,MDL子系统的代码和之前版本已经发生了非常大的差异,具体表现在: 1.    针对DDL 和DML做了区分,引入了fast path的概念,对于走fast path路径的MDL锁,无需任何读写锁操作,使用类似LOCK WORD的方式来标记赋予权限 2.    对MDL的存储采用LOCK FREE HASH的方式,这样5.6所谓的mdl分区在5.7里都全部移除了 3.    THR_LOCK被移除掉了,改而全部使用MDL锁来代替,为了适应这种变化,引入新的MDL锁类型来处理类似LOCK TABLE READ这样的场景,同时例如DML饥饿处理也做了些变化   另外,鉴于MDL子系统的复杂度,本文只是做一些简单的描述,后续还会单独分篇来对其中的某些细节进行探讨。很早之前写了篇博客来介绍MDL锁的发展历程,有兴趣的可以看一下:http://mysqllover.com/?p=985   先画个图,简单的理一下各个类之间的关系 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL5.7 : Metadata Lock关键类及函数 Post Footer automatically generated by wp-posturl plugin for wordpress.

MySQL5.7 新特性: Atomic Truncate

最近在测试MySQL5.7时,随手truncate了一个空表,竟然触发了一次checkpoint操作,每秒写入量达到好几百M,直接把redo log 和脏页刷到底了,显然在生产场景这是不可接受的。 report的bug地址见:http://bugs.mysql.com/bug.php?id=74312 相关堆栈为: ha_innobase::truncate->row_truncate_table_for_mysql->log_make_checkpoint_at 一个小小的truncate竟然触发了一次完全的checkpoint,这到底是为什么?带着这个问题,我们来看看在MySQL5.7中对truncate table逻辑的相关改动 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL5.7 新特性: Atomic Truncate Post Footer automatically generated by wp-posturl plugin for wordpress.

MySQL 5.7 新特性:在线truncate undo log文件

在MySQL5.7.5版本中,增加了一个比较有用的功能,即用户可以自己truncate掉undo log。 对应的changeling entry如下: InnoDB: You can now truncate undo logs that reside in undo tablespaces. This feature is enabled using theinnodb_undo_log_truncate configuration option. For more information, see Truncating Undo Logs That Reside in Undo Tablespaces. 原创文章,转载请注明: 转载自Simple Life 本文链接地址: MySQL 5.7 新特性:在线truncate undo log文件 Post Footer automatically generated by wp-posturl plugin for wordpress.

MySQL5.7: 动态调整buffer pool size

在5.7.5中提供了一个新功能,能够动态的对buffer pool size进行调整。 对应的changelog entry: InnoDB: The innodb_buffer_pool_size parameter is now dynamic, allowing you to resize the buffer pool without restarting the server. The resizing operation, which involves moving pages to a new location in memory, is performed chunks. Chunk size is configurable using the new innodb_buffer_pool_chunk_size configuration option. You can monitor resizing progress using the new Innodb_buffer_pool_resize_status status variable. For more […]