MySQL索引优化

SQL及索引优化
1、mysql安装与卸载(linux在线安装与卸载)
2、数据库版本选择
1、查看数据库的版本

select @@version;
在这里插入图片描述
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

3、MySQL慢查日志的存储格式
如下图所示:

说明:
1、# Time: 180526 1:06:54 -------查询的执行时间
2、# User@Host: root[root] @ localhost [] Id: 4 -------执行sql的主机信息
3、# Query_time: 0.000401 Lock_time: 0.000105 Rows_sent: 2 Rows_examined: 2-------SQL的执行信息:
Query_time:SQL的查询时间
Lock_time:锁定时间
Rows_sent:所发送的行数
Rows_examined:锁扫描的行数
4、SET timestamp=1527268014; -------SQL执行时间
5、select * from staff; -------SQL的执行内容

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值