mysql笔记

166 阅读2分钟

常用指令

# 数据存储目录
show variables like 'datadir';

# 查看所有链接
show global status like 'thread%';

# 非交互式链接超时事件 8小时
show global variables like 'wait_timeout'; 
# 交互式链接超时事件 8小时
show global bariables like 'interactive_timeout';

# 数据库支持的链接数量默认:151
show variables like 'max_connections'

# 查询缓存是否开启状态, 默认关闭, mysql8.0移除
show variables like 'query_cache%';

# 查询优化器是否开启更详细的日志记录
show variables like 'optimizer_trace';

# 设置当前会话优化器开启详细的日志记录
set optimizer_trace="enabled=on";

mysql的系统变量作用域?

分为 global 与 session;
不指定时默认为 session; 
global 代表所有会话; 要想数据库的变量永久改变需要修改默认的配置文件.

索引

索引即数据、数据即索引(一定存在聚簇索引).
是一种有序的数据结构;
建立索引的目的是加快数据的检索效率;

分类: 聚簇索引 与 辅助索引(即其它索引).

聚簇索引: 
    一定存在, B+Tree存储结构,叶子节点存储数据.
    来源优先级依次为:
    主键、非NULL的唯一性索引、隐藏索引(rowid)

辅助索引:
    聚合索引(联合索引) 具有最左匹配原则;避免冗余索引.

FQA

mysql如何划分?

分为Server(服务层) 与 Storage Engin(存储引擎层).
存储引擎负责数据的管理,提供数据读写的api与Server交互.

建立索引的参考?

1.whereorder bygroup By等搜索条件字段
2.数据的离散度(离散度值越高越好)
3.无序或者经常更新的数据不适合做主键
4.避免冗余索引(联合索引具有默认包含索引)

一条查询语句的执行过程?

1.连接数据库(与数据库建立会话,数据库为了更快建立会话连接,采用了连接池技术) 
2.解析器(进行sql语句的词法、语法分析)
3.预解析器(sql语句的语义分析,即sql语句是否正确) 
4.优化器(sql语句进行优化) 
5.生成执行计划 
6.执行器(执行执行计划, 调用存储引擎的api, 获取返回的数据刷选并处理返回给客户端).

mysql的优化层次

1. 表类型(即存储引擎)、表结构的优化
2. sql(即索引)的优化