MySQL 5.6 vs MariaDB 5.5 vs Percona(5.5 & 5.6) 之TPCC性能测试

一、简述
是由原来 MySQL 的作者 Michael Widenius 创办的公司所开发的免费开源的数据库服务器。MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX 存储引擎。(摘自:http://baike.baidu.com/view/2521908.htm)
简单的说:MariaDB是MySQL的一个变种,可以作为官方MySQL版本的一个替代品,并且在一些特性上做了增强。
MariaDB的官网见:http://mariadb.org

二、测试环境
2.1 详细测试环境见下图:

MySQL Cluster 7.2.7内存表和磁盘表对比测试

一、准备工作
自从2009年测试MySQL Cluster 7.0之后,就没怎么关注过它,发展实在太慢了,还有很多不靠谱的地方。前阵子退出7.2.7版本后,看了看新特性介绍,号称性能比以往版本高了很多,于是再关注并进行测试。
部署过程不多说,下载PRM包后直接安装即可。共10个节点,其中1个管理节点,其他9个节点同时作为数据和SQL节点,所有节点服务器配置图:

MySQL Cluster管理节点关键配置见下:

MySQL优化 之 Discuz论坛MySQL通用优化

之前分别在2006和2009年写过两篇关于discuz优化的文章:MySQL优化 之 Discuz论坛优化MySQL优化 之 Discuz论坛优化 -- 续,没想到都6年过去了,discuz还在坚挺的使用MyISAM引擎,堪比罚改委...
今日帮朋友优化号称日均数百万PV,数百万UV的论坛,后台DB采用R710(16G Ram,PERC 6/i 256MB BBU,4块 15K RPM SAS盘做raid 1+0,ext3文件系统,E5620 * 2),这个配置看似也不错了,不过压力仍然较大,大量的请求处于:sending data和statistics状态。
经过分析,确认瓶颈主要在:

1. IO读,IO写倒还好,不算高;因为数据表都是MyISAM,需要产生较高的物理读,不能通过内存有效缓冲;
2. 使用的MySQL是官方5.1版本,InnoDB队列请求排队较严重(部分表已经先转成InnoDB了);
3. 部分未转换成InnoDB的表MyISAM表级锁比较严重;

综上,建议做以下改进工作:

技术相关: 

[MySQL FAQ]系列 -- 新手必看:一步到位之InnoDB

前言:MySQL发展到今天,InnoDB引擎已经作为绝对的主力,除了像大数据量分析等比较特殊领域需求外,它适用于众多场景。然而,仍有不少开发者还在“执迷不悟”的使用MyISAM引擎,觉得对InnoDB无法把握好,还是MyISAM简单省事,还能支持快速COUNT(*)。本文是由于最近几天帮忙处理discuz论坛有感而发,希望能对广大开发者有帮助。

1. 快速认识InnoDB
InnoDB是MySQL下使用最广泛的引擎,它是基于MySQL的高可扩展性和高性能存储引擎,从5.5版本开始,它已经成为了默认引擎。
InnODB引擎支持众多特性:

a) 支持ACID,简单地说就是支持事务完整性、一致性; 
b) 支持行锁,以及类似ORACLE的一致性读,多用户并发;
c) 独有的聚集索引主键设计方式,可大幅提升并发读写性能;
d) 支持外键;
e) 支持崩溃数据自修复;

InnoDB有这么多特性,比MyISAM来的优秀多了,还犹豫什么,果断的切换到InnoDB引擎吧 :)

2. 修改InnoDB配置选项
可以选择官方版本,或者Percona的分支,如果不知道在哪下载,就google吧。
安装完MySQL后,需要适当修改下my.cnf配置文件,针对InnoDB相关的选项做一些调整,才能较好的运行InnoDB。
相关的选项有:

SAS vs SSD各种模式下MySQL TPCC OLTP对比测试结果

在各种测试组合方案中,组合10(组合10:SSD * 2, RAID 0, XFS,WB,nobarrier,noop)的综合性能最高,因此以它为基准,其他方案与其对比,下表是各组合和组合10的对比:

相应的对比线形图:

测试环境:

infobright下如何使用utf8字符集

目前infobright应用越来越多了,有些场景下需要和台管理系统共用,因此需要同时存在brighthouse和myisam两种引擎。
这时候,如果需要brighthouse引擎支持utf8字符集,需要:
1. 数据库对象创建时务必使用utf8字符集,这点尤为关键,否则不可支持utf8;
2. 数据表对象创建时也使用utf8字符集;
3. 导入文件提前转换成utf8字符集;
4. 连接infobright时,执行set names utf8;
5. 导入文件,查看字符集是否正确;

另一种场景下,可能myisam表也需要支持utf8,这个相对比较麻烦:
1. 数据库对象创建时无所谓,不强制必须是utf8;
2. 数据表对象创建时务必使用utf8字符集;
3. 将导入文件全部转换成utf8字符集的INSERT语法,直接写入数据,infobright不支持LOAD DATA INFILE方式导入utf8字符集的文件;
4. 也可以将其他非字符型字段导入后,再用update进行更新;

页面

Subscribe to iMySQL | 老叶茶馆 RSS