MySQL优化方案(一)

一.show status

show status命令(查看MySQL服务器状态信息),了解SQL执行频率。可显示日志,特定的数据库、表、索引、进程及权限表中的信息。具体如MySQL启动后的运行时间,当前MySQL客户端连接数、MySQL服务器执行的慢查询数、当前MySQL执行了多少select/insert/delete/update语句等统计信息,从而根据当前状态进行对应调整或优化

show [global|session(默认)] status like '状态项名称'

show status like 'Uptime'		MySQL服务器已经运行时间
show status like 'com_select'	本次MySQL启动后执行select语句的次数	

Innodb_rows_read				Select查询返回行数
Innodb_rows_inserted			执行INSERT操作插入行数
Innodb_rows_updated			    执行UPDATE操作更新行数
Innodb_rows_deleted			    执行DELETE操作删除行数

--查看insert语句执行数
show [global] status like 'com_insert'
--查看update语句执行数
show [global] status like 'com_update'
--查看delete语句执行数
show [global] status like 'com_delete'
--查看试图连接到MySQL(不管是否连接成功)的连接数
show status like 'connections'
--查看线程缓存内的线程数量
show status like 'threads_cached'
--查看当前打开的连接数量
show status like 'threads_connected'
--查看创建用来处理连接的线程数.若Threads_created较大,可增加thread_cache_size值
show status like 'threads_created'
--查看激活的(非睡眠状态)线程数
show status like 'threads_running'
--查看立即获得的表锁次数
show status like 'table_locks_immediate'
--查看不能立即获得的表锁次数.若该值较高且有性能问题,应首先优化查询,然后拆分表或使用复制
show status like 'table_locks_waited'
--查看创建时间超过slow_launch_time秒的线程数
show status like 'slow_launch_threads'
--查看查询时间超过long_query_time秒的查询个数
show status like 'slow_queries'

二.explain

explain命令,可分析低效的SQL执行计划(MySQL是如何执行select语句信息),包括各个表之间何种联系,使用哪种index

explain select sum(amount) from customer a,payment b where 1=1 and a.customer_id = b.customer_id and email = "pay@zhaoyaojing.io"
--mysql在表中找到所需行的方式即访问类型
all index range ref eq_ref const/system null,性能变化是从差到好

三.optimize

optimize优化语句,支持myiasm和innodb表,允许用户恢复空间和合并数据碎片

optimize table table_name1,table_names

optimize命令针对myiasm和innodb两种存储引擎的表的优化方式不同,前者是先分析这张表,然后整理相关的MySQL datafile,最后回收未使用的空间。后者是recreate临时表+alter table整理空间+删除原始表+rename临时表+analyze to gather statistics

四.规范sql脚本书写

规范SQL脚本语句书写

1.避免select *

2.order by优化,order by语句非索引项或有计算表达都会降低查询速度

3.exists代替in

4.varchar代替char

5.能用distinct就不用group by

6.避免使用!= <>产生全表扫描

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值