首页 > 开发 > JAVA > 正文

【打造扛得住的MySql数据库架构】课程感悟

2016-07-31 22:24:39  来源:慕课网
基准测试篇  Mysql基准测试:
1.建立mysql服务器的性能基准线,确定当前服务器的运行情况
2.模拟比当前系统更高的负载,找出系统瓶颈,增加数据库并发,观察QPS和TPS,确定并发量与性能最优关系
3.测试不同硬件、软件和操作系统配置
4.证明新的硬件设备是否配置正确
  如何进行基准测试
1.对整个系统进行基准测试,从系统入口进行测试
优点:能够测试整个系统的性能,包括web服务器数据库
反应系统中各组件接口的性能问题
缺点:测试设计复杂,消耗时间长
2.单独对mysql进行基准测试
优点:测试设计简单,消耗时间短
缺点:无法全面了解整个系统性能基线
  mysql基线测试指标
单位时间所处理的事务数TPS
单位时间内所处理的查询数QPS
响应时间:平均,最小,最大,各时间占百分比
并发量:同时处理的查询请求数量 (正在工作中的并发的操作数)
  基准测试步骤:
1.计划和设计基准测试
2.准备基准测试及数据收集脚本 (CPU/IO/网络流量)
3.运行基准测试及分析测试结果
  容易忽略的问题:
1.使用生产环境数据时只用了部分数据(生产库完全备份来测试)
2.在多用户场景中,只做单用户的测试 (使用多线程并发测试)
3.在单服务器上测试分布式应用 (使用相同架构来测试)
4.反复执行统一查询 (容易缓存命中,无法反应真实情况)
  基准测试工具和软件:
1.mysqlslap:模拟服务器负载,并输出相关统计信息,可以自动生产查询语句
常用参数说明:
--auto-generate-sql 由系统自动生产sql脚本进行测试
--auto-generate-sql-add-autoincrement 在生产的表中增加自增ID
--auto-generate-sql-load-type 指定测试中使用的查询类型
--auto-generate-sql-write-number指定初始化数据时生产的数据量
--concurrency指定并发线程数量
--engine指定要测试表存储引擎,可以用都好分割多个存储引擎
--no-drop 指定不清理测试数据
--iteration 指定测试运行的次数
--number-of-queries 指定每个线程执行的查询数量
--debug-info指定输出额外的内存及CPU统计信息
--number-int-cols指定测试表中包含的int类型列的数量
--number-char-cols指定测试表中包含varchar类型数量
--create-schema指定了用户执行测试数据库名字
--query用于指定自动以sql脚本
--only-print 并不运行测试脚本,而是把生成的脚本打印出来
  工具二:sysbench
安装:umzip sysbench-0.5.zip
cd sysbench
./autogen.sh
./congfigure
make&make install
常用参数:
--test用于指定所要执行的测试类型,支持以下参数(Fieio 文件系统I/0测试 CPU Memory)
--mysql-db用于指定执行基准测试的数据库名
--mysql-table-engine指定存储引擎
--oltb-tables-count 测试的表数量
--oltp-table-size指定表行数
--mum-threads并发线程数量
--max-time指定最大的测试时间
--report-inrerval 间隔多长时间输出一次统计信息
prepare用于准备测试数据
run用户实际进行测试
cleanup用于清理测试数
  Ps:不用自己搭环境,直接线上模拟简直爽的不要不要的。
最后感谢老师的精彩课程和慕课网的精品推出!