- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
赖铮 - 腾讯云数据库内核TXSQL详解
腾讯资深数据库专家赖铮分享《腾讯云数据库内核TXSQL详解》
展开查看详情
1 .TXSQL数据库详解 演讲人:赖铮(Allen Lai) 腾讯TEG TXSQL团队 腾讯云专家工程师
2 . 目录 • TXSQL简介 • TXSQL的性能优化 • TXSQL的功能优化 • TXSQL的企业级特性
3 .1 TXSQL简介
4 .腾讯云 – 国内领先的云服务供应商 计算 存储 数据库 安全
5 .TencentDB(CDB) – 腾讯云数据库服务 ⚫ 完善的数据库服务 ⚫ 自主可控的管理 ⚫ 应用兼容 ⚫ 多种数据库引擎 ⚫ 海量数据库实例, 支持PB+ 存储
6 .CDB 现网客户
7 . TXSQL – 云数据库服务的核心 ✓Route Access clusters ✓Safety ⚫ TengXun ✓HA MySQL(Tencent MySQL) Instance cluster ⚫ 自研的MySQL 分支 TXSQL ✓Database engines ✓Replication TXSQL TXSQL ⚫ 基于官方MySQL版本 Storage cluster ✓Storage
8 . TXSQL的演进之路 TXSQL 8.0 (coming soon) TXSQL 5.7 • Bugfix for 5.7 TXSQL 5.6 • Features needed by OSS • Bugfix for 5.6 • Encryption TXSQL 5.5 • Features • Audit needed by OSS • Thread pool • Bugfix for 5.5 • Features from • ... • Features needed DBA & business by OSS • Read and Write Optimization TXSQL 5.1 • ... • Bugfix for 5.1
9 .2 TXSQL的性能优化
10 . Redo log的优化:双缓冲区 Trx_1 mtr_commit protected by log_sys->w_mutex and switch buf Trx_2 flush and sync redo mtr_commit log_write_up_to log buf1 buf2 Trx_m mtr_commit redo log write Trx_n log_get_lsn read log_sys->lsn
11 .Redo log优化效果
12 . Readview的深度优化 read view 存在的问题? ✓ 整个创建过程一直持有 trx_sys->mutex 锁 ✓ 需要遍历 trx_sys->trx_list (5.5) 或 140000 trx_sys->rw_list (5.6) 120000 ✓ read_view 的内存在每次创建中被分配,事务提 100000 交后被释放 ✓ 并发较大,活跃事务链表过长时,会在 80000 trx_sys->mutex 上有较大的消耗 60000 TXSQL 解决上述问题的方法 40000 20000 ✓ 在 trx_sys下维护一个全局的事务ID的有序集合 0 ✓ 在 trx_sys下维护一个有序的已分配序列号的事 32 64 128 256 512 1000 务列表,记录拥有最小序列号的事务,供 original optimized purge 时使用 ✓ 减少不必要的内存分配 ✓ 参照 5.7 的实现,在 5.6 中将 ro_trx_list 移除
13 . 半同步复制优化 5000 Master Lock_log split for sql thread and 4500 io thread 4000 semi-sync built in at slave 3500 3000 Lock_log split at master table_map_log_event cache 2500 2000 1500 Reconstruct IO thread table_map_log_event 1000 cache 500 semi-sync built in at master 0 1 2 4 8 16 32 128 Slave original optimized
14 .并行复制 90000 80000 70000 60000 50000 40000 30000 20000 10000 0 1 2 3 4 5 6 7 8 logical_clock table master
15 .3 TXSQL的功能优化
16 . 异步删除大表 优化目标: 避免在删除大表时产生IO尖刺 实现方法: 1.重命名IDB文件 2. 在后台线程中逐步truncate该文件(每次128M) 3. 最终删除该文件
17 . 优化select ... offset n limit m sub_select 问题: row_search_for_mysql ✓ 内部数据格式转换耗费了大 量的CPU时间 row_sel_get_clust_rec_for_mysql row_sel_store_mysql_rec 优化: evaluate_join_record 将offset计算下沉到 Query_result_send::send_data InnoDB,减少不必要的 开销 offset --
18 . ALTER TABLE NO_WAIT | TIMEOUT ✓ ALTER TABLE table [NO_WAIT | WAIT [n]] ✓ DROP TABLE table [NO_WAIT | WAIT [n]] ✓ TRUNCATE TABLE table [NO_WAIT | WAIT [n]] ✓ OPTIMIZE TABLE table [NO_WAIT | WAIT [n]] ✓ RENAME TABLE table_src [NO_WAIT | WAIT [n]] TO table_dst ✓ ……
19 . 秒加字段(instant add column) ✓ 来自腾讯游戏团队,获得官方认可并已合入官方8.0 ✓ 只修改数据字典信息,避免数据拷贝 ✓ 即时完成,无需等待 *注:即将在txsql5.7的新版本内核中发布
20 .4 TXSQL的企业级特性
21 . TXSQL 线程池 client client client client listener thread (pollfd) 70000 60000 high_prio_queue queue 50000 40000 wroker thread ... wroker thread 30000 get_event 20000 get_event 10000 handle_event handle_event 0 32 64 128 256 512 1000 threadpool_handle_request thread_pool=off thread_pool=on
22 .TXSQL 审计
23 . TXSQL 数据加密 ⚫ Kerying 插件 ⚫ keyring_file:文件方式存储秘钥 ⚫ keyring_okv : 秘钥由ORACLE Key Vault管理 CAM ⚫ Keyring_kms KMS Plugin ⚫ 集成 KMS & CAM with MySQL TDE ⚫ 实现 Keyring 接口 KMS : Key Management Service by Tencent Cloud KMS CAM : Cloud Access Management Service by Tencent Cloud
24 .欢迎关注腾讯数据库技术公众号
25 .THANK YOU !