一、索引语法
1. 创建索引
sql
CREATE [UNIQUE|FULLTEXT] INDEX index_name ON table_name (index_col_name,...);
UNIQUE:唯一索引,保证列值不重复。FULLTEXT:全文索引,用于文本搜索。- 普通索引:不加修饰词即可创建。
2. 查看索引
sql
SHOW INDEX FROM table_name;
查看表中所有索引的详细信息。
3. 删除索引
sql
DROP INDEX index_name ON table_name;
删除指定名称的索引。
二、SQL 执行频率统计
通过 SHOW [SESSION|GLOBAL] STATUS 命令查看数据库操作频次:
sql
SHOW GLOBAL STATUS LIKE 'Com_______';
- 可统计
Com_select(查询)、Com_insert(插入)、Com_update(更新)、Com_delete(删除)等操作的执行次数。 GLOBAL表示全局统计,SESSION表示当前会话统计。
三、慢查询日志(性能瓶颈定位)
1. 作用
记录所有执行时间超过 long_query_time(默认 10 秒)的 SQL 语句,用于定位慢查询。
2. 配置开启(my.cnf 配置文件)
ini
# 开启慢查询日志
slow_query_log=1
# 设置慢查询阈值为 2 秒
long_query_time=2
- 配置后需重启 MySQL 服务生效。
- 日志文件默认路径:
/var/lib/mysql/localhost-slow.log。
四、Profile 性能分析
1. 作用
分析 SQL 语句在执行过程中各个阶段的耗时与资源消耗。
2. 常用命令
sql
-- 查看所有 SQL 的耗时概况
show profiles;
-- 查看指定 query_id 的 SQL 各阶段耗时
show profile for query query_id;
-- 查看指定 query_id 的 SQL CPU 使用情况
show profile cpu for query query_id;
query_id由show profiles结果提供,用于定位具体 SQL。