sql与索引优化
数据库表结构优化
系统配置
硬件
mysql> show variables like \'slow_query_log\';
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| slow_query_log | OFF |
+----------------+-------+
1 row in set (0.00 sec)
慢日志查询没有开启,可以开启一下。
找到my.cnf,添加如下内容sudo vim /usr/local/mysql/my.cnf
# 添加慢查询日志
log_output=file
slow_query_log=on
slow_query_log_file = /tmp/mysql-slow.log
log_queries_not_using_indexes=on
long_query_time = 1
重启mysql。
mysql> show variables like \'slow_query_log\';
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| slow_query_log | ON |
+----------------+-------+
1 row in set (0.00 sec)
mysql> show variables like \'%quer%\';
+----------------------------------------+------------------------------------+
| Variable_name | Value |
+----------------------------------------+------------------------------------+
| binlog_rows_query_log_events | OFF |
| ft_query_expansion_limit | 20 |
| have_query_cache | YES |
| log_queries_not_using_indexes | ON |
| log_throttle_queries_not_using_indexes | 0 |
| long_query_time | 1.000000 |
| query_alloc_block_size | 8192 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 8388608 |
| query_cache_type | OFF |
| query_cache_wlock_invalidate | OFF |
| query_prealloc_size | 8192 |
| slow_query_log | ON |
| slow_query_log_file | /tmp/mysql-slow.log |
+----------------------------------------+------------------------------------+
这时候再看,已经开启了慢查询日志。
$ sudo cat /tmp/mysql-slow.log
/usr/local/mysql/bin/mysqld, Version: 5.6.40-log (Source distribution). started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
如果更改日志目录位置
比如,更改为/home/msyql/log/mysql-slow.log
至少需要将log目录所有者设置为mysql:mysql。
这样重启mysql的时候,才能自动生成mysql-slow.log文件。
jiqing@jiqing-pad:/home/mysql/log$ ll
总用量 12
drwxr-xr-x 2 mysql mysql 4096 5月 31 01:46 ./
drwxr-xr-x 3 jiqing jiqing 4096 5月 31 01:26 ../
-rw-rw---- 1 mysql mysql 175 5月 31 01:46 mysql-slow.log
jiqing@jiqing-pad:/home/mysql/log$ pwd
/home/mysql/log
如果log目录不是mysql用户权限,将无法生成日志文件,mysql用户无权写入数据。