mysql数据库优化课程---15、mysql优化步骤(mysql中最常用最立竿见影的优化是什么)
一、总结
一句话总结:索引优化最立竿见影
索引优化:不然有多少行要扫描多少次,1亿行大概是5到10分钟,和列的存量有关系
2、show status的作用是什么?
执行频率:mysql>show global status; global表示自数据库启动至今
了解各种sql的执行频率
通过show status命令了解各种SQL的执行频率。
格式:mysql> show [session|global]status;其中:session(默认)表示当前连接,global表示自数据库启动至今mysql>show status;mysql>show global status;mysql>show status like ‘Com_%’;mysql>show global status like ‘Com_%’;
• 参数说明:
• Com_XXX表示每个XXX语句执行的次数如:– Com_select 执行select操作的次数,一次查询只累计加1– Com_update 执行update操作的次数– Com_insert 执行insert操作的次数,对批量插入只算一次。– Com_delete 执行delete操作的次数• 只针对于InnoDB存储引擎的。– InnoDB_rows_read 执行select操作的次数– InnoDB_rows_updated 执行update操作的次数– InnoDB_rows_inserted 执行insert操作的次数– InnoDB_rows_deleted 执行delete操作的次数• 其他:– connections 连接mysql的数量– Uptime 服务器已经工作的秒数– Slow_queries:慢查询的次数
3、定位执行效率的SQL语句?
explain select:explain select * from table where id=1000;
desc select:desc select * from table where id=1000;
1)explain select * from table where id=1000;
2)desc select * from table where id=1000;
1.explain或desc定位一条sql语句的影响行数.
mysql>desc select * from user where username='user8'\G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: user partitions: NULL type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 11 filtered: 10.00 Extra: Using where
4、检查服务器增、删、改和查的使用频次:(本次启动以来)?
show status:查的次数:show status like "%Com_select%";
show status like "%Com_update%";
show status like "%Com_insert%";show status like "%Com_select%";show status like "%Com_delete%";
5、查innodb自启动以来的影响行数?
show status:show status like "%InnoDB_rows%";
mysql> show status like "%InnoDB_rows%";
+----------------------+-------+| Variable_name | Value |+----------------------+-------+| Innodb_rows_deleted | 2 || Innodb_rows_inserted | 0 || Innodb_rows_read | 105 || Innodb_rows_updated | 3 |+----------------------+-------+
6、如何知道一个程序中的哪些sql语句的执行效率很慢?
慢查询日志
explain desc:explain或desc定位一条sql语句的影响行数.
1.explain或desc定位一条sql语句的影响行数.
mysql>desc select * from user where username='user8'\G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: user partitions: NULL type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 11 filtered: 10.00 Extra: Using where2.查看mysql的慢查询日志.1)查看慢查询日志是否开启show variables like "%quer%";slow_query_log | ONslow_query_log_file | mysql-slow.loglong_query_time | 10.0000002)查看慢查询的次数show status like "%quer%";Slow_queries | 0
二、内容在总结中
推荐mysql书籍:
网易专家DBA: 《深入浅出Mysql》1.SQL语句优化1)优化SQL语句的一般步骤2)索引优化3)check与optimize使用方法4)常用SQL的优化检查服务器增、删、改和查的使用频次:(本次启动以来)show status like "%Com_update%";show status like "%Com_insert%";show status like "%Com_select%";show status like "%Com_delete%";查innodb自启动以来的影响行数:mysql> show status like "%InnoDB_rows%";+----------------------+-------+| Variable_name | Value |+----------------------+-------+| Innodb_rows_deleted | 2 || Innodb_rows_inserted | 0 || Innodb_rows_read | 105 || Innodb_rows_updated | 3 |+----------------------+-------+定位执行效率较低的SQL语句:1.explain或desc定位一条sql语句的影响行数.mysql>desc select * from user where username='user8'\G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: user partitions: NULL type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 11 filtered: 10.00 Extra: Using where2.查看mysql的慢查询日志.1)查看慢查询日志是否开启show variables like "%quer%";slow_query_log | ONslow_query_log_file | mysql-slow.loglong_query_time | 10.0000002)查看慢查询的次数show status like "%quer%";Slow_queries | 03.修改慢查询的时间(my.ini)long_query_time=64.重启mysql服务器net stop mysql57net start mysql57优化表空间:optimize table sales;1.myisam表没有问题.2.innodb表ibdata1文件无法回收空间.