最基础的查询:
show status:查看状态,一般是一些计数器。
show global status:查看全局状态;show status与show global status的区别为:前者查看的是当前对话,退出后就失效了;后者查看的是全局的,重启数据库或者退出数据库才会失效(已经验证);前者是一个session,后者是数据库启动后所有session的累积。
show variables:查看变量,变量与状态的区别是,变量是可以设置修改的,而状态是统计的结果。
【show variables like ‘%dir%‘】可以查看有关路径的变量,如存放数据的路径(包括配置文件)
举例:如要查看连接数状态,或允许的连接这个变量,可以使用show status like ‘%connect%‘;show variables like ‘%connect%‘;
max_used_connections:历史连接数峰值
thread_running:正在运行的线程【运维经常监测这个值,超过阈值则报警】
threads_connected:连接了的线程
查询条件:大多数查询是可以带查询条件的,如
show status where variable_name like ‘Handler%‘
show status where variable_name like ‘Handler%‘ or variable_name like ‘Created%‘
基本查询:
版本:select version()
进程:show processlist与show full processlist【kill query/connection id可以直接杀掉过慢的进程】
数据库、表和列:show database; show tables; show columns from 表名(describe 表名);
表详情:show table status like ‘表名‘
函数、触发器和定时器:show procedure/function status like ‘名字‘; show triggers; show events;
授权、错误和警告:show grants; show errors; show warnings;
存储引擎:show engine innodb status
查询一些创建过程(信息一般也比较多):
show create database 数据库名;
show create table 表名;
show create procedure
查询查询的效率:
show profiles:展示近期查询的id及耗时;id用于下述语句
show profile [for query 数字]:用来分析当前会话中语句执行的资源消耗情况(每个过程耗时多少)。其是否启用是根据会话级的变量profiling,默认是关闭的【show variables like ‘profiling‘】
explain [partitions] select ……:查询的详细信息,包括查询的类型、使用的索引、查询的行数等等;如果有partitions,显示扫描哪些分区,及他们是如何使用的。explain语句可以显示查询性能。
剑走偏锋【infomation_schema】:
information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式。元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。可以认为本笔记中的很多查询,其实都是从该表中查询;只是查询的语法做了包装。
如查看分区情况:
select
partition_name part,
partition_expression expr,
partition_description descr,
table_rows
from information_schema.partitions where
table_schema = schema()
and table_name=‘表名‘;
不太常用的查询:
查看当前会话的隔离级别:
1.查看当前会话隔离级别:select @@tx_isolation;
2.查看系统当前隔离级别:select @@global.tx_isolation;
3.设置当前会话隔离级别:set session transaction isolatin level repeatable read;
4.设置系统当前隔离级别:set global transaction isolation level repeatable read;