PAGE 21
互联网金融在分布式数据库的运维实践
为什么选择了MariaDB 分布式数据库?
1、 业务上子查询SQL过多,需要大量改写为join关联查询语句,开发需要更改代码
在MariaDB 5.3版本里,就已经对子查询进行了优化,并采用semi join半连接方式将SQL改写为了表关联join,从而提高了查询速度。
通常情况下,我们希望由内到外,即先完成内表里的查询结果,然后驱动外查询的表,完成最终查询,但是MySQL 5.5会先扫描外表中的所有数据,每条数据将会传到内表中与之关联,如果外表很大的话,那么性能上将会很差。
案例:MySQL 5.5的子查询执行计划,是将in重写为exists
我们看一下这两个执行计划,当外表比较大时,第一行会扫描5000071行,改为exists写法,它的执行计划和in是完全一样的。如果你外表比较大的话,查询性能会是非常差的。
案例:MariaDB 10.0的子查询执行计划,是将in/exists重写为join
MariaDB 10.0相当于MySQL5.6版本,这里In和exists,它会直接重写为join关联查询,这里有三个不同的写法,执行计划是完全一样的。改写join以后是由小表关联大表,可以看下扫描的行数为10行,执行效率就是非常快的。
2、由于数据量上TB,直接升级MySQL5.6,不能平滑升级,需要进行一次mysqldump再导入,耗费过多的时间。
以MySQL5.5版本为例,若要升级到MySQL5.6,需要进行一次全库mysqldump导出再导入,当数据库很大时,比如100GB,升级起来会非常困难。但如果升级为MariaDB10,会非常轻松,按照官方文档阐述,只需把MySQL卸载掉,并用MariaDB启动,然后通过mysql_upgrade命令升级即可完成。
MariaDB跟MySQL在绝大多数方面是兼容的,对于前端应用(比如PHP、Perl、Python、Java、.NET、MyODBC、Ruby、MySQL C connector)来说,几乎感觉不到任何不同。
升级到MariaDB 10注意事项
在处理内部的临时表,MariaDB 5.5/10.0用Aria引擎代替了MyISAM引擎,这将使某些GROUP BY和DISTINCT请求速度更快,因为Aria有比MyISAM更好的缓存机制。如果你的临时表很多的话,要增加aria_pagecache_buffer_size参数的值(缓存数据和索引),默认是128MB( 而不是tmp_table_size 参数)。如果你没有MyISAM表的话,建议把key_buffer_size调低,例如64KB,仅仅提供给MySQL库里面的系统表使用。
官方推荐使用jemalloc内存管理器获取更好的性能。
Jemalloc内存管理器性能
上图是官方的压力测试报告,可以看出Jemalloc内存管理器的性能是最好的。
这是之前我给MariaDB作者写的一封信,他回答,升级到MariaDB是没有问题的,现在很多大公司都用MariaDB,例如Google、Wikipedia。主要原因我总结如下:
在Oracle控制下的MySQL有两个问题:
MySQL核心开发团队是封闭的,完全没有Oracle之外的成员参加。很多高手即使有心做贡献,也没办法做到。
MySQL新版本的发布速度,在Oracle收购Sun之后大为减缓。
这里再说一下MariaDB企业版和社区版的区别:
企业版更注重bug的修复,社区版则对新功能更新比较快。MariaDB社区版和企业版的源代码都是开源的,并且所有功能都是免费开放,不用担心功能上有阉割,但甲骨文MySQL企业版延伸套件采取封闭源代码且需要付费。
此外,MariaDB相比MySQL拥有更多的功能、更快、更稳定、BUG修复更快。
3、解决复制延迟,开启多线程并行复制(MariaDB 10.0.X基于表)
金融公司对数据一致性要求较高,主从同步延迟问题是不能接受的。MySQL5.6由于是基于库级别的并行复制,在实际生产中用处并不大,而只有5.7才支持基于表的并行复制。MariaDB的并行复制有两种实现模式:
第一种:Conservative mode of in-order parallel replication(保守模式的顺序并行复制)
MariaDB 10 通过基于表的多线程并行复制技术,如果主库上1秒内有10个事务,那么合并一个IO提交一次,并在binlog里增加一个cid = XX 标记,当cid的值是一样的话,Slave就可以进行并行复制,通过设置多个sql_thread线程实现。
上述cid为630的事务有2个,表示组提交时提交了2个事务,假如设置slave_parallel_threads =24(并
您可能关注的文档
- 分布式云数据中心解决方案建议书1.docx
- 服务器虚拟化迁移指导书1.docx
- 服务器虚拟化项目实施方案1.docx
- 感知交通平台建设方案1.docx
- 港口航运行业高层投资决策参考1.docx
- 高并发秒杀系统设计1.docx
- 高考大纲-汉语1.docx
- 高校科技人才培养合作方案1.docx
- 高校科研大数据平台解决方案1.doc
- 高校数字资源建设与应用平台方案建议书1.docx
- 2025至2030酒店产业政府现状供需分析及市场深度研究发展前景及规划可行性分析报告.docx
- 2025-2030中国笔记本电脑和平板电脑行业市场现状供需分析及投资评估规划分析研究报告.docx
- 2025-2030中国安乃近行业运行形势及竞争策略分析研究报告.docx
- 2025至2030中国医用显示器行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030中国飞机加油行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030中国电机启动器行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030中国帮助创作工具(HAT)软件行业深度研究及发展前景投资评估分析.docx
- 2025至2030增益均衡器行业市场占有率及投资前景评估规划报告.docx
- 2025至2030红茶行业市场风险投资及运作模式与投融资报告.docx
- 2025至2030中国变频功率计行业调研及市场前景预测评估报告.docx
原创力文档

文档评论(0)