数据库
如何使用MySQL优化后Patch?
- MySQL无锁优化Patch:
MySQL OLTP场景下DML语句(Insert, Update, Delete)大量并发操作trx_sys全局结构体中的关键数据结构,造成临界区的竞争和同步瓶颈。改造后使用无锁哈希表维护事务单元。减少锁冲突,提升并发度。
Patch使用指导请参见:https://www.hikunpeng.com/document/detail/zh/kunpengdbs/appAccelFeatures/lockftf/kunpengdbsmysqllockfree_20_0002.html
- MySQL细粒度锁优化Patch:
MySQL OLTP场景下DML语句(Insert, Update, Delete)大量并发操作访问lock_sys->mutex全局锁保护的关键数据结构,造成锁竞争严重导致性能下降。替换成细粒度hash桶锁。减少锁冲突,提升并发度。
Patch使用指导请参见:https://www.hikunpeng.com/document/detail/zh/kunpengdbs/appAccelFeatures/fglocktf/kunpengdbsmysqlfglock_20_0002.html
- MySQL并行查询优化Patch:
MySQL单SQL查询只能调度单线程,多核CPU无法使用,单查询性能查询差难于满足查询场景的性能要求,通过并行查询优化提升查询性能。
Patch使用指导请参见 :https://www.hikunpeng.com/document/detail/zh/kunpengdbs/appAccelFeatures/paraqtf/kunpengolapmysqlparallelquery_20_0006.html
- MySQL NUMA调度Patch:
MySQL OLTP场景高并发下系统默认的线程调度使得线程频繁跨NUMA的访问,这种情况导致CPU开销增大,性能提升受限制,需要对用户处理线程做动态绑定固定NUMA CPU减少跨NUMA访问,同时需要保证CPU访问的负载必须均衡,后台线程静态绑定固定NUMA CPU减少跨NUMA访问,提升后台线程效率。
Patch使用指导请参见:https://www.hikunpeng.com/document/detail/zh/kunpengdbs/appAccelFeatures/numastf/kunpengdbsmysqlnuma_20_0002.html
- MySQL可插拔线程池Patch:
MySQL OLTP场景高并发下线程数过多,CPU消耗在无效的资源竞争和频繁切换上,线程池方案通过队列方式管理任务,所有的任务先放入等待执行队列,按系统执行能力取出任务队列让CPU执行,每个CPU同时处理任务个数是有限的,一般2~5个最优,从而保持稳定的业务处理能力。
Patch使用指导请参见:https://www.hikunpeng.com/document/detail/zh/kunpengdbs/appAccelFeatures/mysqlthreadpool/kunpengolapmysqlthreadpool527_20_0002.html
MySQL线程池特性技术原理是怎么样的?
高并发下线程数过多,CPU消耗在无效的资源竞争和频繁切换上,线程池方案通过队列方式管理任务,所有的任务先放入等待执行队列,按系统执行能力取出任务队列让CPU执行,每个CPU同时处理任务个数是有限的,一般2~5个最优,从而保持稳定的业务处理能力。
如何配置MySQL NUMA调度特性参数?
根据参数的合法取值,如果需要设置“sched_affinity_foreground_thread”参数的值,对应的SQL语句如下:
- 设置为空值:
set global sched_affinity_foreground_thread = '';
- 设置为0:
set global sched_affinity_foreground_thread = '0';
- 设置为2-5:
set global sched_affinity_foreground_thread = '2-5';
另外,《MySQL NUMA调度优化 特性指南》中提供了三种配置MySQL NUMA调度特性参数的方式,可在配置文件、启动参数或运行时设置,请按需选择其中一种方式进行操作。
如何理解“使用TPC-C模型时,并发数达到32以上”?
《鲲鹏BoostKit数据库使能套件 技术白皮书》的“使用TPC-C模型时,当并发数达到32以上时,系统的性能将会有明显的提升;当并发数达到64以上时,系统的写性能将会提高超过15%”描述里,“并发数”在TPC-C模型中,对应terminals的设置值,指终端数量,即同时有多少终端并发执行,表示并发程度。
“并发数达到32以上”意味着使用TPC-C模型时,系统能够同时处理或支持32个以上独立的用户会话或操作。这些会话或操作可能包括事务的提交、查询、更新等,它们并行地在系统上执行,共同构成系统的总负载。
JT_INDEX_SCAN和JT_REF有什么区别?
- JT_INDEX_SCAN
- 定义:指的是在执行查询时,数据库系统扫描整个索引的叶子节点,将遍历索引的所有条目,而不论查询条件如何。
- 应用场景:全表扫描或者没有明确范围限制的查询。
- SQL示例:SELECT a FROM t1;
- 这条SQL会返回表t1中的所有a列值。
- JT_RANGE
- 定义:指的是在索引上进行范围扫描。数据库系统会扫描索引中的一部分数据,基于某个范围条件来限制扫描的起始点和结束点。
- 应用场景:用于范围查询,例如使用BETWEEN、>或<等条件来限制检索的结果集。
- SQL示例:SELECT a FROM t1 WHERE a BETWEEN 10 AND 20;
- 这条SQL请求返回a列值在10到20之间的记录。