mysql性能优化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql性能优化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2968字,纯文字阅读大概需要5分钟。
内容图文
![mysql性能优化](/upload/InfoBanner/zyjiaocheng/897/de36d70e3468422088ea8deec19f401b.jpg)
mysql 良好的安全连接,自带查询解析,sql语句优化,使用读写锁(细化到行),事务隔离和多版本并发控制提高并发,完备的事务日志记录,强大的存储引擎提供高效查询(表记录可达百万级)。如果是innerdb还可在崩溃后进行完整的恢复。优点非常多,但是还是需要优化
1,查看sql执行频率
show status like 'Com_%' ; // Com_select :执行select操作的次数,一次累计加1。其他类似
以下只针对InnoDB存储引擎,累加算法略有不同
Innodb_rows_read:select 查询操作插入的行数
Innodb_rows_inserted/updated/deleted:执行insert/update/delete 操作的行数
通过以上的参数,可以了解数据库应用是以查询为主还是写入数据为主。
对于事务性的应用,通过Com_commit和Com_rollback可以了解事务的提交和回滚情况,对于回滚操作非常的频繁的数据库,可能意味着应用编写的存在问题。
基本情况了解:
Connections:试图链接数据库服务的次数
Uptime:服务器工作时间
slow_queries:慢查询次数
2,定位执行效率比较低的sql语句
通过慢查询日志定位慢的SQl语句,用--slow_query_log_file[=file_name](mysql5.6之后) 选项启动中,mysqld会写一个所有执行时间超过long_query_time秒的SQL语句的日志文件。
使用SHOW FULL PROCESSLIST;查看当前Mysql在进行的线程,同时对一些锁表操作进行优化
# 将查询执行时间较慢的语句进行记录 mysql配置文件 /etc/my.cnf 如果未指定file_name,默认为host_name-slow.err
slow_query_log_file=/var/lib/mysql/Dragonwake-slow.log
# 执行超过1秒的sql会被log下来
long_query_time=1
日志查询 show variables like 'log_%'
二进制日志数目:show master logs;
3,通过explain分析慢SQLi
explain SQl语句
结果:
--select_type:表示select的类型,常见的类型是SIMPLE (既不是用表连接或子查询),PRIMARY(主查询,即外层的查询),UNION(Union中的第二个或后面的查询语句),SUBQUERY(子查询中的第一个select查询)等
--table:输出结果的表名
--type:表示MYSQL在表中找到行的方式,或者叫访问类型
常见的有 ALl index range ref eq_ref const system NUll 从左到右性能由差到好
type=all 全表扫描
type=index 索引全扫描,mysql遍历所有索引来查询
type=range:索引范围扫描,常见于<,<= ,> , >= between
type=ref:使用非唯一索引扫描或唯一索引的前缀扫描,返回匹配某个单独值得匹配
type=eq_ref 类似ref 就在于使用得索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,简单来说,就是多表连接中使用primary key和unique index作为关联条件
type=const/system 但表中最多有一个匹配行,查询起来非常迅速,一般主键primary key或唯一索引unique index进行得查询,通过唯一索引ek_email访问得时候,类型type为const;而从我们构造的仅有一条记录得a表中检索时,类型type为system
type=null :mysql不用访问表或索引,就得到就结果
类型type还有其他值,如ref_or_null(与ref相似,区别在于条件包含对null的查询),index_merge(索引合并优化),unique_subquery(in后面是一个查询主键字段的子查询),index_subquery(与unique_subquery相似,区别在于in后面时一个查询非唯一索引字段的子查询)
--possile-key:表示查询时可能使用的索引
--key:实际使用的索引
--key-len:使用到索引字段的长度
--rows :扫描行的数量
--Extra:执行情况的说明和描述,包含不适合在其他列中显示但是对执行计划非常重要的额外信息
Using where :表示优化器除了利用索引来加速访问之外,还需要索引回表查询数据
mysql通过存储引擎取 Innodb 索引目前有两种BTREE索引和HASH索引。
内容总结
以上是互联网集市为您收集整理的mysql性能优化全部内容,希望文章能够帮你解决mysql性能优化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。