mysql> grant all on . to student@'%'> d.2 访问代理主机
#mysql -P4006 -h192.168.4.53 -ustudent -p123456
+++++++++++++++++++++++++++++++++++++
三、MySQL优化(优化思路、 优化什么 、怎么优化)
访问数据时,出结果特别慢。分析可能是由哪些原因导致的。
1 硬件配置低:查看应用设备的使用率CPU 内存 存储(硬盘)
top 0.0 wa
sar
uptime I/O
free -m
2 网络带宽: 使用网络测速软件 网速
3 提供数据库服务软件版本低:
查看数据库服务运行时的运行参数配置(常用配置参数)
超时时间
connect_timeout
建立连接时,三次握手的超时时间
wait_timeout 建立连接后,等待断开连接的超时时间
mysql> show variables like "connect_timeout";
mysql> show variables like "wait_timeout";
允许重复使用的线程的数量
mysql> show variables like "thread_cache_size";
为所有线程缓存打开表的数量。
table_open_cache=2000
mysql> show variables like "table_open_cache";
pc1 T1
pc2 t3 mysqld
pc3 T1
key_buffer-size
sort_buffer_size
read_buffer_sizeread_rnd_buffer_sizename Index
select name from user where name="zhangsan";
select name,uid from user order by uid desc; 查询缓存
name="lucy"
pc3 update user set name="lili" where name="lucy";
query_cache_type 0|1|2
0 关闭 不存储
1 开启 无条件存储
2 开启 指定存储才存储
查询查询缓存统计信息?
MySQL> show global status like "qcache%";
Qcache_hits 0
Qcache_inserts 0
Qcache_lowmem_prunes 0
并发连接数:
mysql> show variables like "max_connections";
曾经有过的最大连接数
mysql> show global status like "Max_used_connections";
公式:
曾经有过的最大连接数/并发连接数=0.85 * 100% = 85%
3000/ X = 0.85
查看参数的值
MySQL> show variables like "%关键字%";
mysql> show variables like "%password%";
mysql> show variables like "old_passwords";
临时定义 mysql> set [global] 变量名=值;
永久定义
vim /etc/my.cnf
[mysqld]
变量名=值
....
:wq
#systemctl restart mysqld
mysql体系结构?
连接池
sql接口
分析器
优化器
查询缓存
存储引擎
文件系统
管理工具
MySQL服务处理查询请求的过程?
4 程序编写的查询数据库的sql查询命令不合理 ,导致数据库处理慢
在数据库服务器上启用"慢查询日志":记录超过指定时间显示查询结果的sql命令.
mysql日志文件有4种:错误日志 binlog日志 查询日志 慢查询日志
错误日志:记录数据库服务在启动和运行过程中产生的信息。
默认启用
log-error=/var/log/mysqld.log
binlog日志:默认没有启用。 作用? 启用? 查看日志内容 ? 删除日志? 手动生成新日志文件? 使用日志恢复数据?
查询日志(默认没有启用)记录所有执行过的SQL命令
启用:
vim /etc/my.cnf
[mysqld]
general-log //启用日志
#general-log-file=文件名 //指定日志名称
:wq
]# systemctl restart mysqld
默认存储位置 /var/lib/mysql
默认名称 主机名.log
查看日志文件内容 #cat host50.log
+++++++++++++++++++++++++++++++++++++
慢查询日志 (默认没有启用)记录超过指定时间显示查询结果的SQL命令。默认超时时间是10秒
启用:
vim /etc/my.cnf
[mysqld]
slow-query-log //启用日志
]#
slow-query-log-file==文件名 //指定日志名称
#long-query-time=数字 //指定超时时间:wq
#log-queries-not-using-indexes //记录没有使用索引的做查询的sql命令
:wq
]# systemctl restart mysqld
默认存储位置 /var/lib/mysql
默认名称 主机名-slow.log
查看日志文件内容 #cat 主机名-slow.log
mysql> select sleep(15);
统计慢查询日志信息 并保存到指定文本文件里。
]# mysqldumpslow /var/lib/mysql/host50-slow.log > /tmp/sql.txt
#cat /tmp/sql.txt
++++++++++++++++++++++++++++++++++++++++
5 数据存储架构设置有数据传输瓶颈。