加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 安全 > 正文

腾讯云布道师:一次性能峰值提升10W的DB调优之旅

发布时间:2021-01-08 06:42:53 所属栏目:安全 来源:网络整理
导读:副标题#e# 《腾讯云布道师:一次性能峰值提升10W的DB调优之旅》要点: 本文介绍了腾讯云布道师:一次性能峰值提升10W的DB调优之旅,希望对您有用。如果有疑问,可以联系我们。 作者:张青林,腾讯云布道师、MySQL架构师,隶属腾讯TEG-基础架构部-CDB内核开发

MySQL read view 问题改进

为了解决 read view 问题,5.6 做了以下几件事情:

  • 将 5.5 的 trx_list 拆分为 ro_trx_list & rw_trx_list,由于只读事务不会对数据进行修改,所以在创建视图的同时就只需要扫描 rw_trx_list 即可;
  • auto-commit-non-locking-ro transactions?的特殊优化;
  • 添加语法 START TRANSACTION READ ONLY 用于声名事务是只读事务;

经过上面的修改,似乎解决了 read view 的问题,但实际却不然,因为他只是解决了事务链表的长度,创建时遍历&内存消耗的开销是没有解决的,并且使用上述特性需要修改应用程序,这一点是比较困难的,5.7为了彻底的解决 read view 的性能问题,做了以下事情:

  1. Refactor the MVCC code
  2. Reuse read views for AC-NL-RO selects
  3. Use a pool of read views
  4. Add MVCC class
  5. Use a trx_id to trx_t* map
  6. Keep the active trx_id_ts in a vector.
  7. Pre-allocate a small cache of record and table locks
  8. Avoid extra work when a transaction is tagged as read-only (during commit).
  9. General code cleanup
  10. Get rid of trx_sys_t::ro_trx_list. Adding and removing a transaction from the ro_trx_list ???is very costly.

经过了上面的代码重构,5.7 中很少看到 trx_sys->mutex 的性能瓶颈,有想更详细了解的同学可以看一下这些内容:

mutex" width="560" height="249" />

CDB read view 问题改进

为了解决 Read view 的性能问题,简单的说 CDB 内核团队对于Read view 主要做了以下事情:

  • backport percona?的 read view 相关修改到 CDB MySQL中;
  • 参照 5.7 的实现,在 5.6 中将 ro_trx_list 移除;

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读