nowindxdw
11/2/2017 - 2:52 AM

高性能Mysql(第三版) 笔记

淘宝架构演变:Mysql4.0---Oracle---Mysql5.0

查看当前的表的引擎等信息:
 show table status from 数据库名  where name='表名';
或者
use  数据库名
 show table status   where name='表名';
修改引擎:
ALTER  TABLE  表名 ENGINE = 'InnoDB/MyISAM'

mysql TimeLine
2001  ----- 3.23------MyISAM 代替ISAM,InnoDB可以支持,但是需要手工编译
2003  -----4.0  新增UNION ,多表delete,重写复制,InnoDB成为标配,引入查询缓存,支持SSL
2005 ------4.1  引入子查询,insert into on duplicate key update 支持UTF-8
2006  -----5.0  出现,视图、触发器、存储过程和存储函数等企业级特性,ISAM代码彻底移除
2008 ----- 5.1 SUN收购后发布的首个版本,引入了分区,基于行的复制,plugin API
2010 ----- ORACLE收购SUN后发布的首个版本,改善了性能、扩展、复制、分区。新增对windows的支持
INNODB成为默认引擎,新增PREFORMANCE_SCHEMA库
2013 ----5.6.10 InnoDB 引擎进行了改造,提供全文索引能力,使 InnoDB 适合各种应用场景,5.6 中使用一种半连接(semi-joins) 和物化处理来提升子查询的执行速度
            EXPLAIN 语句支持 UPDATE/DELETE/INSERT 语句的执行计划信息。其他关于查询的优化还包括消除在使用很小的 LIMIT 值时的表扫描
            MySQL 面向行的复制支持新的 "row image control" ,只记录修改的列而不是行中所有的列
            同时引入了 NoSQL 接口,提供了兼容 memcached 的 API,该特性让应用可直接访问 InnoDB 存储引擎。底层上保持着跟关系数据库引擎在维护上的统一。同时底层的 InnoDB 引擎也增强在持		久化优化统计、多线程消除以及提供更多的系统表和监控数据。
            
            
2014.6  5.7.1 在Mysql5.6上我们获得的最佳结果是25万个查询每秒,5.7则号称快3倍
最新版本5.7.13(2016.7)
  8. 性能和可扩展性:改进 InnoDB 的可扩展性和临时表的性能,从而实现更快的网络和大数据加载等操作。
  9. JSON支持:使用 MySQL 的 JSON 功能,你可以结合 NoSQL 的灵活和关系数据库的强大。
  10. 改进复制 以提高可用性的性能。包括多源复制,多从线程增强,在线 GTIDs,和增强的半同步复制。 
  11. 性能模式 提供更好的视角。我们增加了许多新的监控功能,以减少空间和过载,使用新的 SYS 模式显著提高易用性。
  12. 安全: 我们贯彻“安全第一”的要求,许多 MySQL 5.7 新功能帮助用户保证他们数据库的安全。
  13. 优化: 我们重写了大部分解析器,优化器和成本模型。这提高了可维护性,可扩展性和性能。
  14. GIS: MySQL 5.7 全新的功能,包括 InnoDB 空间索引,使用 Boost.Geometry,同时提高完整性和标准符合性。
https://dev.mysql.com/

mysql拥有分层架构,上层是服务层服务和查询执行引擎,下层是存储引擎。他们之间在查询时通过API来交互。



mysql benchmark 基准测试

基准测试分为集成式(full-stack)和单组件式(single-component)。后者就是单独测试MySQL

第一步 测试之前要明确测试何种指标。
常用考虑指标有:吞吐量、响应时间或延迟、并发性、可扩展性
第二步 决定采用标准的基准测试还是设计专用测试
第三步 获取系统性能和状态
第四步 获取正确的测试结果  测试结果是否可重复
第五步 运行基准测试获得结果 (最好自动化)

结果分析:绘图:gnuplot


基准测试工具:
集成式测试:
ab
http_load
JMeter
单组件式工具:
mysqlsnap
MysqlBenchMarkSujit;
Super Smack
Database test suit
sysbench  

数据库测试套件中的dbt2 TPC-C测试(略)
Percona的TPCC-MySQL测试工具



服务器性能剖析
最经常被提出的三个性能相关的服务请求:
1.如何确认服务器是否达到了性能最佳的状态
2.找出某条语句为什么执行不够快
3.诊断被用户描述为“停顿”“堆积”或者“卡死”的某些间歇性疑难故障

实践:

 剖析单条查询 .note