0%

在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已。

                                                                    图-MySQL查询过程

阅读全文 »

explain能做什么

  • 表的读取顺序

  • 数据读取操作的操作类型

  • 哪些索引可以使用

  • 哪些索引被实际使用

  • 表之间的引用

  • 每张表有多少行被优化器查询

阅读全文 »

my.ini配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[mysql] 

# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
#设置3306端口
port = 3306

#允许最大连接数
max_connections=3000

#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8

#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

#建议2G以上,可根据服务器内存适当调整
innodb_buffer_pool_size=40G

#服务器有几个CPU就设置为几,建议用默认设置,一般为8.
innodb_thread_concurrency=16

innodb_buffer_pool_instances=4

#thread_cache_size的值可以设置为8*内存大小,假如服务器内存是8G,那么可以设置为64
thread_cache_size=256

tmp_table_size=3G
max_heap_table_size=6G

query_cache_size=1G


sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

basedir=D:\MySQL56\MySQL\mysql-5.6.49-winx64

datadir=D:\MySQL56\MySQL\mysql-5.6.49-winx64\data

# 开启慢查询
slow_query_log=ON
long_query_time=5

在MySQL中,可以使用SHOW STATUS语句查询一些MySQL数据库服务器的性能参数、执行频率。

SHOW STATUS语法如下:

1
SHOW [GLOBAL|SESSION] STATUS LIKE '参数'
阅读全文 »

show processlist

概念:

  • show processlist命令可以查看当前MySQL实例的连接情况,
  • 用于观察是否有大量的连接处于非正常状态。用法非常简单,直接使用就行

用法

show processlist

字段的含义

字段 解释
id 连接标识符
User 当前用户
Host 操作的主机,指客户端
db 默认数据库(如果已选择);否则为NULL
Command 线程正在执行的命令类型
Time 线程处于其当前状态的持续时间(以秒为单位)
Size 指示线程正在执行的操作,事件或状态
Info 线程正在执行的语句,如果未执行任何语句,则为NULL。
该语句可能是发送到服务器的那条语句,或者是最内部的语句(如果该语句执行其他语句,比如存储过程中的select语句)

Command字段,对应的状态

  • sleep:正在等待客户端发送新的请求

  • query:正在执行查询或者正在将结果发送给客户端

  • locked:在MySQL服务层,线程正在等待表锁

  • analyzing and statistics:线程正在收集存储引擎的统计信息,并生成查询的执行计划

  • copying to tmp table:线程正在执行查询,并且将其结果集都复制到一个临时表中

  • sorting result:正在对结果集进行排序

  • sending data:线程可能在多个状态之间传送数据,或者在生成结果集或者向客户端返回数据

show full processlist

  • show processlist命令默认Info字段最多显示每条语句的前100个字符,如果想完全显示,可以使用show full processlist