美文网首页
《高性能mysql第三版》

《高性能mysql第三版》

作者: 编程放大镜 | 来源:发表于2022-04-19 09:16 被阅读0次

    性能的定义为完成某件任务所需要的时间(任务执行时间+等待时间)。如果把性能优化仅仅看成是提升每秒查询量,这其实只是吞吐量优化。

    掌握面向响应时间的优化方法,需要不断地对系统进行性能剖析(profiling)。

    「轻量级」 性能剖析,比如为所有的sql语句计时,加上脚本总时间统计。如果流量趋势比较稳定,随机采样也可以。

    <?php

    profiling_enabled = rand(0, 100) > 99;

    测量PHP应用程序

        new Relic、xhprof

    慢查询日志分析工具 pt-query-digest

    pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。

    3.3.2 剖析单条查询

    show status、show profile(未来可能被 performance schema 取代)、慢查询日志

    mysql 5.6 三个基本库mysql 、information_schema、performace_schema。

    XtraDB是InnoDB存储引擎本身拆分出了一个分支的更新的存储引擎。

    MariaDB、Percona Server 是mysql分支。

    3.4 诊断间歇性问题

    第4章 Schema 与数据类型优化,数据库设计

    4.1.1 整数类型

        INT(1)和INT(20),对于存储和计算来说是一样的,只是规定了一些交互工具的显示字符个数。

    tiny, small, medium, int, big 分别占1(8位)、2、3、4、8个字节。

    4.1.3 字符串类型

        char 非常适合存储密码的md5值,因为这是一个定长的值。对于经常变更的数据,char类型更不容易产生碎片。对于非常短的列,例如用char(1)存储只有Y和N的值,如果采用单字节字符集,只需要一个字节,但是varhar却要两个字节,因为还有一个记录长度的额外自己。记录字符串长度定义不是字节数,是字符数。

        varchar(5)和varchar(200)存储’hello’的空间开销是一样的。在用临时表进行排序是,更长的列会消耗更多的内存。

    show table status where Name='user';

    5.2 索引的优点

    常见的B-Tree索引,按照顺序存储数据,所以mysql可以用来做ORDER BY 和 GROUP BY操作。

    大大减少的服务器需要扫描的数据量。

    所以可以帮忙服务器避免排序和临时表。

    索引可以把随机 I/O 变为顺序 I/O。

    5.3 高性能的索引策略

    5.3.1 独立的列:索引列不能是表达式的一部分,也不能是函数的参数。

    5.3.2 前缀索引和索引选择性

        索引的选择性是指,不重复的索引值和数据表的记录总数的比值。

        选择合适的前缀长度

        select count(distinct left(city,3))/count(*) as sel3,

        count(distinct left(city,4))/count(*) as sel4,

        前缀索引是一种能使索引更小、更快的有效方法,但缺点是:MySQL无法使用前缀索引做 ORDER BY 和 GROUP BY,也无法做覆盖扫描。

    5.3.3 多列索引

    相关文章

      网友评论

          本文标题:《高性能mysql第三版》

          本文链接:https://www.haomeiwen.com/subject/xwytertx.html