2.9 KiB
2.9 KiB
MySQL运维
1、建立连接
首先客户端与 MYSQL 服务器建立连接这个就不用说,客户端发起请求经过三次握手之后与服务器建立 TCP 连接;服务器收到请求之后对输入的用户名密码做权限校验, 校验通过之后后续的通信就基于这个长连接进行传输。
mysql> show processlist;
+----+-----------------+-----------+-------+---------+------+------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-----------------+-----------+-------+---------+------+------------------------+------------------+
| 5 | event_scheduler | localhost | NULL | Daemon | 152 | Waiting on empty queue | NULL |
| 8 | root | localhost | mysql | Query | 0 | init | show processlist |
+----+-----------------+-----------+-------+---------+------+------------------------+------------------+
TIME参数:表示该连接已经多久没有发生过数据传输。默认如果超过 8 小时没有发生过数据传输服务端就会自动关闭该连接。可以通过 wait_timeout参数来设置超时时间。
2、查询缓存
MySQL 查询缓存是 MySQL 中比较独特的一个缓存区域,用来缓存特定 Query 的整个结果集信息,且共享给所有客户端。为了提高完全相同的 Query 语句的响应速度,MySQL Server 会对查询语句进行 Hash 计算后,把得到的 hash 值与 Query 查询的结果集对应存放在Query Cache 中。当 MySQL Server 打开 Query Cache 之后,MySQL Server 会对接收到的每一个 SELECT 语句通过特定的 Hash 算法计算该 Query 的 Hash 值,然后通过该 hash 值到 Query Cache 中去匹配。
mysql> show variables like '%query_cache%';
+------------------------------+---------+
| Variable_name | Value |
+------------------------------+---------+
| have_query_cache | YES | --查询缓存是否可用
| query_cache_limit | 1048576 | --可缓存具体查询结果的最大值
| query_cache_min_res_unit | 4096 | --查询缓存分配的最小块的大小(字节)
| query_cache_size | 599040 | --查询缓存的大小
| query_cache_type | ON | --是否支持查询缓存
| query_cache_wlock_invalidate | OFF | --控制当有写锁加在表上的时候,是否先让该表相关的 Query Cache失效
+------------------------------+---------+
开启缓存
Copymysql> set global query_cache_size = 600000; --设置缓存内存大小
mysql> set global query_cache_type = ON; --开启查询缓存
关闭缓存
Copymysql> set global query_cache_size = 0; --设置缓存内存大小为0, 即初始化是不分配缓存内存
mysql> set global query_cache_type = OFF; --关闭查询缓存