Mysql库表状态查询

1. 查看库的各链接状态

对于一个mysql连接或者一个线程,任何时刻都有一个状态,表示其当前正在做什么。一般使用show full processlist查看。

+---------+-------------+-------------------+------+---------+------+-------+-----------------------+
| Id      | User        | Host              | db   | Command | Time | State | Info                  |
+---------+-------------+-------------------+------+---------+------+-------+-----------------------+
| 2547225 | operator@RR | 10.3.18.205:60253 | fb   | Query   |    0 | NULL  | show full processlist |
| 2548100 | operator@RR | 10.4.19.83:51754  | fb   | Sleep   |    1 |       | NULL                  |
| 2548101 | operator@RR | 10.4.19.83:53661  | fb   | Sleep   |    1 |       | NULL                  |
| 2548102 | operator@RR | 10.4.19.83:45808  | fb   | Sleep   |    1 |       | NULL                  |
| 2548103 | operator@RR | 10.4.19.83:58881  | fb   | Sleep   |    1 |       | NULL                  |
| 2548104 | operator@RR | 10.4.19.83:33521  | fb   | Sleep   |    1 |       | NULL                  |
+---------+-------------+-------------------+------+---------+------+-------+-----------------------+

2. 查看表状态

数据库各表的信息都保存在INFORMATION_SCHEMA-->TABLES表里。可以直接在此表查询也可以通过SHOW TABLE STATUS命令来查询。

SHOW TABLE STATUS LIKE 'user' WHERE id = 1 \G;

结果:

*************************** 1. row ***************************
           Name: user(表名)
         Engine: InnoDB(存储引擎)
        Version: 10
     Row_format: Compact(行的格式,是否固定或压缩)
           Rows: 4(行数,对于MyISAM该值是精确的,但对于InnoDB该值是估计值)
 Avg_row_length: 4096(平均每行的字节数)
    Data_length: 16384(表数据总的字节数)
Max_data_length: 0(表数据的最大容量,和存储引擎有关)
   Index_length: 0(索引的大小B)
      Data_free: 7340032(对于MyISAM表示已分配但没有使用的空间)
 Auto_increment: 5(下一个AUTO_INCREMENT值)
    Create_time: 2014-06-17 16:45:53(表的创建时间)
    Update_time: NULL(表数据的最后修改时间)
     Check_time: NULL(使用CHECK TABLE或myisamchk检查表的时间)
      Collation: utf8_bin(表的默认字符集和字符列排序规则)
       Checksum: NULL(整个表的实时检验和)
 Create_options: (创建表时指定的其他选项)
        Comment: 
1 row in set (0.00 sec)

3. 查看SQL语句执行情况

EXPLAIN sql...

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。

EXPLAIN SELECT id FROM user WHERE id=1 \G;

结果:

*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: user
         type: const
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 4
          ref: const
         rows: 1
        Extra: Using index
1 row in set (0.02 sec)


列名类型解释
id SELECT语句的ID编号,优先执行编号较大的查询,如果编号相同,则从上向下执行
select_typeSIMPLE一条没有UNION或子查询部分的SELECT语句
PIMARY最外层或最左侧的SELECT语句
UNIONUNION语句里的第二条或最后一条SELECT语句
DEPENDENT UNION和UNION类型的含义相似,但需要依赖于某个外层查询
UNION RESULT一条UNION语句的结果
SUBQUERY子查询中的第一个SELECT子句
DEPENDENT SUBQUERY和SUBQUERY类型的含义相似,但需要依赖于某个外层查询
DERIVEDFROM子句里的子查询
tablet1各输出行里的信息是关于哪个数据表的
PartitionsNULL将要使用的分区.只有EXPLAIN PARTITIONS ...语句才会显示这一列.非分区表显示为NULL
type 联接操作的类型,性能由好到差依次如下
system表中仅有一行
const单表中最多有一个匹配行
eq_ref联接查询中,对于前表的每一行,在此表中只查询一条记录,使用了PRIMARY或UNIQUE
ref联接查询中,对于前表的每一行,在此表中只查询一条记录,使用了INDEX
ref_or_null联接查询中,对于前表的每一行,在此表中只查询一条记录,使用了INDEX,但是条件中有NULL值查询
index_merge多个索引合并
unique_subquery举例说明: value IN (SELECT primary_key FROM single_table WHERE some_expr)
index_subquery举例说明: value IN (SELECT key_column FROM single_table WHERE some_expr)
range只检索给定范围的行,包括如下操作符: =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, or IN()
index扫描索引树(略比ALL快,因为索引文件通常比数据文件小)
ALL前表的每一行数据都要跟此表匹配,全表扫描
possible_keysNULLMySQL认为在可能会用到的索引.NULL表示没有找到索引
keyNULL检索时,实际用到的索引名称.如果用了index_merge联接类型,此时会列出多个索引名称,NULL表示没有找到索引
key_lenNULL实际使用的索引的长度.如果是复合索引,那么只显示使用的最左前缀的大小
refNULLMySQL用来与索引值比较的值, 如果是单词const或者???,则表示比较对象是一个常数.如果是某个数据列的名称,则表示比较操作是逐个数据列进行的.NULL表示没有使用索引
rows MySQL为完成查询而需要在数据表里检查的行数的估算值.这个输出列里所有的值的乘积就是必须检查的数据行的各种可能组合的估算值
ExtraUsing filesort需要将索引值写到文件中并且排序,这样按顺序检索相关数据行
Using indexMySQL可以不必检查数据文件, 只使用索引信息就能检索数据表信息
Using temporary在使用 GROUP BY 或 ORDER BY 时,需要创建临时表,保存中间结果集
Using where利用SELECT语句中的WHERE子句里的条件进行检索操作

























  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在MySQL中建立从库和从,需要先确保主库已存在并正在运行。 首先,你需要在从库上创建一个新的数据库。在MySQL客户端中执行以下命令: ``` CREATE DATABASE your_database_name; ``` 接下来,你需要配置从库以连接到主库并开始同步数据。在从库的MySQL配置文件(通常是`my.cnf`或`my.ini`)中进行以下更改: ``` server-id = unique_id log_bin = mysql-bin relay_log = relay-log ``` 将 `unique_id` 替换为一个唯一的整数。这个用于标识从库,并与主库进行通信。 然后,在MySQL客户端中执行以下命令,将从库配置为连接到主库: ``` CHANGE MASTER TO MASTER_HOST = '主库的IP地址', MASTER_USER = '主库的用户名', MASTER_PASSWORD = '主库的密码', MASTER_LOG_FILE = '主库当前正在写入的binlog文件名', MASTER_LOG_POS = 主库当前正在写入的binlog文件的位置; ``` 将 `'主库的IP地址'`、`'主库的用户名'`、`'主库的密码'`、`'主库当前正在写入的binlog文件名'` 和 `主库当前正在写入的binlog文件的位置` 替换为正确的。 最后,启动从库并开始同步数据: ``` START SLAVE; ``` 现在,从库将开始连接到主库,并复制和同步数据。你可以使用以下命令检查从库的状态: ``` SHOW SLAVE STATUS\G; ``` 确保在结果中看到 `"Slave_IO_Running: Yes"` 和 `"Slave_SQL_Running: Yes"`,这示从库已成功连接并正在同步数据。 一旦从库配置完成,并且主库和从库之间的连接正常,你可以在从库上创建从。使用`USE`语句选择之前创建的数据库,并执行`CREATE TABLE`语句来创建从。 注意:在建立从库和从之前,请确保仔细阅读MySQL的文档,并了解主从复制的工作原理和注意事项。此外,建议在进行任何更改之前,先对数据库进行备份,以防止数据丢失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值