衡量指标
Qps:Queries Per Second 每秒查询量,同时适用于InnoDB和MyISAM引擎
QUESTIONS/UPTIME
Tps:Transactions Per Second 每秒传输的事务处理个数,这是指服务器每秒处理的事务数,支持事务的存储引擎如InnoDB等特有的一个性能指标
(COM_COMMIT+COM_CALLBACK)/UPTIME
等待时间:执行sql等待返回结果之间的等待时间
常用工具:MysqlSIap,压力测试工具
创建schema、table、test data
运行负载测试,可以使用多个并发客户端连接
测试环境清理(删除创建的数据、表等,断开连接)
目的:测试mysql服务器瓶颈
MysqlSIap参数,官方提供的压力测试工具
Mysql架构和存储引擎
逻辑架构:
连接层:连接器、连接池,sql查询缓存默认开启缓存,查询结果缓存需要配置,默认不开启
服务层:转换器、优化器、缓存
引擎层
存储层
存储引擎:
MyISAM:
mysql5.5之前默认的存储引擎,由MYD和MYI组成
存储文件:
xx.frm:存储表结构,是任何存储引擎都具备的
xx.myd:数据库文件
xx.myi:索引文件 (非聚集索引,因为数据与索引分开存放)
引擎特性:
并发性与所级别-表级锁
支持全文检索
支持数据压缩
不支持事务
适用场景:
非事务型应用(数据仓库、报表、日志数据)
只读类应用
空间类应用(空间函数、坐标)
InnoDB:
mysql5.5以后版本的默认存储引擎
innodb_file_per_table:
ON:独立表空间 tablename.ibd
OFF:系统表空间 ibdataX
系统表空间无法简单的收缩文件大小,会产生IO瓶颈
独立表空间可以通过optmize table收缩系统文件,独立表空间可以同时向多个文件刷新数据
建议innoDB使用独立表空间
xx.ibd 存储数据+索引
特性:
innoDB是一种事务型存储引擎
完全支持事务的ACID特性
redo log和undo log
innoDB支持行级锁(并发程度更高)
适用场景:
innoDB适合于大多数OLTP应用(联机事务处理)
MyISAM和innoDB对比
CSV:
组成:
数据以文本方式存储在文件
.csv文件存储内容
.csm文件存储表的元数据如表状态和数据量
.frm存储表结构
特点:
以csv格式进行数据存储
所有列都不能为null
不支持索引(不支持大表,不适合在线处理)
可以对数据文件直接编辑(保存文本文件内容)
使用文本修改csv数据后需要执行flush tables刷新表才能查询到最新的数据
Archive:
组成:
以zlib对表数据进行压缩,磁盘I/O更少
数据存储在ARZ为后缀的文件中
特点:
只支持insert和select操作
只允许在自增id列上加索引
使用场景:
日志和数据采集使用
Memory:
文件系统存储特点:
也称heap存储引擎,所以数据保存在内存中
支持hash索引和BTree索引
所有字段都是固定长度 varchar(10) = char(10)
不支持Blog和Text等大字段
memory存储引擎使用表级锁
最大大小由max_heap_table_size参数决定
Federated:
特点:
提供了访问远程mysql服务器上表的方法
本地不存储数据,数据全部放到远程服务器上
本地需要保存表结构和远程服务器的连接信息
使用场景:
偶尔的统计分析及手工查询
如何使用:
默认禁止,弃用需要在启动时增加federated参数