性能优化-SQL及索引优化

3、SQL及索引优化

1、mysql安装与卸载(linux在线安装与卸载)

2、数据库版本选择

1、查看数据库的版本
在这里插入图片描述
2、准备数据
网址:https://dev.mysql.com/doc/sakila/en/sakila-installation.html
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
sakila-db.zip压缩包所包含的文件如下解释
在这里插入图片描述
加载数据
步骤如下图所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、表结构关系

在这里插入图片描述
注:该表结构关系是用工具生成的。

4、如何发现有问题的SQL

MySQL慢查日志的开启方式和存储格式

1、检查慢查日志是否开启:

show variables like 'slow_query_log'

在这里插入图片描述

show variables like 'slow_query_log'  
//查看是否开启慢查询日志

set global slow_query_log_file=' /usr/share/mysql/sql_log/mysql-slow.log' 
//慢查询日志的位置

set global log_queries_not_using_indexes=on;
//开启慢查询日志

set global long_query_time=1;  
//大于1秒钟的数据记录到慢日志中,如果设置为默认0,则会有大量的信息存储在磁盘中,磁盘很容易满掉

2、查看所有日志的变量信息

show variables like '%log%'
mysql> show variables like '%log%';
+-----------------------------------------+------------------------------------+
| Variable_name                           | Value                              |
+-----------------------------------------+------------------------------------+
| back_log                                | 80                                 |
| binlog_cache_size                       | 32768                              |
| binlog_checksum                         | CRC32                              |
| binlog_direct_non_transactional_updates | OFF                                |
| binlog_error_action                     | IGNORE_ERROR                       |
| binlog_format                           | STATEMENT                          |
| binlog_gtid_simple_recovery             | OFF                                |
| binlog_max_flush_queue_time             | 0                                  |
| binlog_order_commits                    | ON                                 |
| binlog_row_image                        | FULL                               |
| binlog_rows_query_log_events            | OFF                                |
| binlog_stmt_cache_size                  | 32768                              |
| binlogging_impossible_mode              | IGNORE_ERROR                       |
| expire_logs_days                        | 0                                  |
| general_log                             | OFF                                |
| general_log_file                        | /var/lib/mysql/mysql-host.log      |
| innodb_api_enable_binlog                | OFF                                |
| innodb_flush_log_at_timeout             | 1                                  |
| innodb_flush_log_at_trx_commit          | 1                                  |
| innodb_locks_unsafe_for_binlog          | OFF                                |
| innodb_log_buffer_size                  | 8388608                            |
| innodb_log_compressed_pages             | ON                                 |
| innodb_log_file_size                    | 50331648                           |
| innodb_log_files_in_group               | 2                                  |
| innodb_log_group_home_dir               | ./                                 |
| innodb_mirrored_log_groups              | 1                                  |
| innodb_online_alter_log_max_size        | 134217728                          |
| innodb_undo_logs                        | 128                                |
| log_bin                                 | OFF                                |
| log_bin_basename                        |                                    |
| log_bin_index                           |                                    |
| log_bin_trust_function_creators         | OFF                                |
| log_bin_use_v1_row_events               | OFF                                |
| log_error                               | /var/log/mysqld.log                |
| log_output                              | FILE                               |
| log_queries_not_using_indexes           | ON                                 |
| log_slave_updates                       | OFF                                |
| log_slow_admin_statements               | OFF                                |
| log_slow_slave_statements               | OFF                                |
| log_throttle_queries_not_using_indexes  | 0                                  |
| log_warnings                            | 1                                  |
| max_binlog_cache_size                   | 18446744073709547520               |
| max_binlog_size                         | 1073741824                         |
| max_binlog_stmt_cache_size              | 18446744073709547520               |

| max_relay_log_size                      | 0                                  |
| relay_log                               |                                    |
| relay_log_basename                      |                                    |
| relay_log_index                         |                                    |
| relay_log_info_file                     | relay-log.info                     |
| relay_log_info_repository               | FILE                               |
| relay_log_purge                         | ON                                 |
| relay_log_recovery                      | OFF                                |
| relay_log_space_limit                   | 0                                  |
| simplified_binlog_gtid_recovery         | OFF                                |
| slow_query_log                          | OFF                                |
| slow_query_log_file                     | /var/lib/mysql/mysql-host-slow.log |
| sql_log_bin                             | ON                                 |
| sql_log_off                             | OFF                                |
| sync_binlog                             | 0                                  |
| sync_relay_log                          | 10000                              |
| sync_relay_log_info                     | 10000                              |
+-----------------------------------------+------------------------------------+
61 rows in set (0.01 sec)

开启慢查日志:

show variables like 'slow_query_log'  
//查看是否开启慢查询日志

set global slow_query_log_file=' /var/lib/mysql/mysql-host-slow.log ' 
//慢查询日志的位置

set global log_queries_not_using_indexes=on;
//开启慢查询日志

set global long_query_time=1;  
//大于1秒钟的数据记录到慢日志中,如果设置为默认0,则会有大量的信息存储在磁盘中,磁盘很容易满掉

验证慢查询日志是否开启:

在mysql操作中,

Show databases;
Use sakila;
select * from store;
select * from staff; 

监听日志文件,看是否写入

tail -50f /var/lib/mysql/mysql-host-slow.log

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值