译者:叶金荣(Email:),手册来源:MySQL手册版本 5.0.20,出处:http://imysql.cn,转载请注明译者和出处,并且不能用于商业用途,违者必究。
14.5.3.16 SHOW PROCESSLIST 语法
SHOW [FULL] PROCESSLIST
SHOW PROCESSLIST 显示了有哪些线程在运行。也可以执行 mysqladmin processlist 命令来得到这些信息。如果有 SUPER 权限,则可以看到全部的线程,否则,只能看到自己发起的线程(这是指,当前对应的MySQL帐户运行的线程)。详情请看“14.5.4.3 KILL Syntax”。如果没有使用关键字 FULL,则只能看到每个查询的前100个字符。从MySQL 4.0.12起,结果中还会以的 host_name:client_port 格式来显示通过TCP/IP方式连接过来的客户端的主机名,这就可以知道每个客户端都正在做什么。这个语句在出现“too many connections”错误时想看看都正在执行什么查询非常有用。MySQL为拥有 SUPER 权限的账户保留了一个额外的连接,这就保证让管理员总是可以连上检查系统状况(假定没有给每个系统账户都授予这个权限)。 SHOW PROCESSLIST 结果中一些常见的状态如下:
Checking table
正在检查数据表(这是自动的)。
Closing tables
正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表。这是一个很快的操作,如果不是这样的话,就应该确认磁盘空间是否已经满了或者磁盘是否正处于重负中。
Connect Out
复制从服务器正在连接主服务器。
Copying to tmp table on disk
由于临时结果集大于 tmp_table_size,正在将临时表从内存存储转为磁盘存储以此节省内存。
Creating tmp table
正在创建临时表以存放部分查询结果。
deleting from main table
服务器正在执行多表删除中的第一部分,刚删除第一个表。
deleting from reference tables
服务器正在执行多表删除中的第二部分,正在删除其他表的记录。
Flushing tables
正在执行 FLUSH TABLES,等待其他线程关闭数据表。
Killed
发送了一个kill请求给某线程,那么这个线程将会检查kill标志位,同时会放弃下一个kill请求。MySQL会在每次的主循环中检查kill标志位,不过有些情况下该线程可能会过一小段才能死掉。如果该线程程被其他线程锁住了,那么kill请求会在锁释放时马上生效。
Locked
被其他查询锁住了。
Sending data
正在处理 SELECT 查询的记录,同时正在把结果发送给客户端。
Sorting for group
正在为 GROUP BY 做排序。
Sorting for order
正在为 ORDER BY 做排序。
Opening tables
这个过程应该会很快,除非受到其他因素的干扰。例如,在执 ALTER TABLE 或 LOCK TABLE 语句行完以前,数据表无法被其他线程打开。 正尝试打开一个表。
Removing duplicates
正在执行一个 SELECT DISTINCT 方式的查询,但是MySQL无法在前一个阶段优化掉那些重复的记录。因此,MySQL需要再次去掉重复的记录,然后再把结果发送给客户端。
Reopen table
获得了对一个表的锁,但是必须在表结构修改之后才能获得这个锁。已经释放锁,关闭数据表,正尝试重新打开数据表。
Repair by sorting
修复指令正在排序以创建索引。
Repair with keycache
修复指令正在利用索引缓存一个一个地创建新索引。它会比 Repair by sorting 慢些。
Searching rows for update
正在讲符合条件的记录找出来以备更新。它必须在 UPDATE 要修改相关的记录之前就完成了。
Sleeping
正在等待客户端发送新请求.
System lock
正在等待取得一个外部的系统锁。如果当前没有运行多个 mysqld 服务器同时请求同一个表,那么可以通过增加 --skip-external-locking参数来禁止外部系统锁。
Upgrading lock
INSERT DELAYED 正在尝试取得一个锁表以插入新记录。
Updating
正在搜索匹配的记录,并且修改它们。
User Lock
正在等待 GET_LOCK()。
Waiting for tables
该线程得到通知,数据表结构已经被修改了,需要重新打开数据表以取得新的结构。然后,为了能的重新打开数据表,必须等到所有其他线程关闭这个表。以下几种情况下会产生这个通知:FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, 或 OPTIMIZE TABLE。
waiting for handler insert
INSERT DELAYED 已经处理完了所有待处理的插入操作,正在等待新的请求。
大部分状态对应很快的操作,只要有一个线程保持同一个状态好几秒钟,那么可能是有问题发生了,需要检查一下。
还有其他的状态没在上面中列出来,不过它们大部分只是在查看服务器是否有存在错误是才用得着。
14.5.3.17 SHOW STATUS 语法
SHOW STATUS [LIKE 'pattern']
SHOW STATUS 显示了各种服务器状态信息。也可以通过运行 mysqladmin extended-status 命令来得到结果。 这里有部分输出结果,某些变量和它对应的值可能跟你的系统不大一样。各种变量所代表的意义详情请看“5.2.4 Server Status Variables”。
mysql SHOW STATUS;
+--------------------------+------------+
| Variable_name | Value |
+--------------------------+------------+
| Aborted_clients | 0 |
| Aborted_connects | 0 |
| Bytes_received | 155372598 |
| Bytes_sent | 1176560426 |
| Connections | 30023 |
| Created_tmp_disk_tables | 0 |
| Created_tmp_tables | 8340 |
| Created_tmp_files | 60 |
...
| Open_tables | 1 |
| Open_files | 2 |
| Open_streams | 0 |
| Opened_tables | 44600 |
| Questions | 2026873 |
...
| Table_locks_immediate | 1920382 |
| Table_locks_waited | 0 |
| Threads_cached | 0 |
| Threads_created | 30022 |
| Threads_connected | 1 |
| Threads_running | 1 |
| Uptime | 80380 |
+--------------------------+------------+
可以通过 LIKE 分句,就可以值显示匹配的变量及其值:
mysql SHOW STATUS LIKE 'Key%';
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| Key_blocks_used | 14955 |
| Key_read_requests | 96854827 |
| Key_reads | 162040 |
| Key_write_requests | 7589728 |
| Key_writes | 3813196 |
+--------------------+----------+
14.5.3.18 SHOW TABLE STATUS 语法
SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']
SHOW TABLE STATUS(在MySQL 3.23新增的)跟 SHOW TABLE 类似,它还显示每个表的许多相关信息。也可以通过运行 mysqlshow --status db_name 命令来显示同样的结果。 SHOW TABLE STATUS 返回了以下几个字段的信息:
Name
表名。
Engine
数据表的存储引擎类型,在MySQL 4.1.2以前,这个值被标志为 Type。详情请看“15 MySQL Storage Engines and Table Types”。
Version
数据表的 `.frm' 文件版本号。
Row_format
记录存储格式(Fixed—固定的, Dynamic—动态的, 或 Compressed—压缩的)。
Rows
记录数。在某些存储引擎中,例如MyISAM 和 ISAM 他们存储了精确的记录数。不过其他存储引擎中,例如 InnoDB,它可能只是近似值。
Avg_row_length
记录的平均长度。
Data_length
数据文件长度。
Max_data_length
数据文件的最大长度。对固定格式存储记录的表来说,它是表的最大记录数。对动态存储记录的表来说,它是数据表存储的最大字节数,给出了数据指针使用的大小。
Index_length
索引文件的长度。
Data_free
已经分配还未使用的字节数。
Auto_increment
下一个 AUTO_INCREMENT 的值。
Create_time
表的创建时间。
Update_time
表最后一次更新时间。
Check_time
表最后一次检查时间。
Collation
表的字符集和校正字符集(在中MySQL4.1.1新增的)。
Checksum
实时的校验和值(如果有的话) (在中MySQL4.1.1新增的)。
Create_options
额外留给 CREATE TABLE 的选项。
Comment
创建表时的备注(或者一些MySQL无法存取改表的相关信息)。
表注释一栏,InnoDB 类型的表会报告它所属的表剩余表空间。对一个使用共享表空间的表来说,它是指共享表空间的剩余空间。如果使用多表空间并且该表有自己的表空间,那么剩余空间就是全部属于这个表的。对 MEMORY (HEAP) (内存)表来说,Data_length, Max_data_length, 和 Index_length 的值接近内存实际分配结果。分配算法预留了大量内存空间以减少重复分配内存的操作。
14.5.3.19 SHOW TABLES 语法
SHOW [OPEN] TABLES [FROM db_name] [LIKE 'pattern']
SHOW TABLES 列出了给定数据库中的非临时(non-TEMPORARY)表。也可以通过命令 mysqlshow db_name 来列出这些表。在MySQL 5.0.1以前,SHOW TABLES 的结果中只有一个字段显示表名。从MySQL 5.0.1开始,SHOW TABLES 还列出了数据库中的视图,还有第二个字段。第二字段的值是表的 BASE TABLE (基表)或者视图名。 请注意,如果没有表的相应权限,那么在 SHOW TABLES 或 mysqlshow db_name 结果中就不会列出该表。 SHOW OPEN TABLES 列出了所有当前正被打开的表。详情请看“7.4.8 How MySQL Opens and Closes Tables”。显示结果中的 Comment 字段告诉我们该表被 cached 和 in_use 的时间。从MySQL 3.23.33开始,可以使用 OPEN 关键字。
14.5.3.20 SHOW VARIABLES语法
SHOW [GLOBAL | SESSION] VARIABLES [LIKE 'pattern']
SHOW VARIABLES 显示了一些MySQL的系统变量值。这些信息也可以通过运行命令 mysqladmin variables 来得到。 GLOBAL 和 SESSION 可选项是从MySQL 4.0.3开始可以用的。如果是 SESSION,就会得到每次新连接中使用的变量值。如果是 SESSION,则得到当前连接中变量的值。如果你不加任何选选项,那么 SESSION 就是默认的。LOCAL 和 SESSION 一样。如果变量的默认值不大合适,则可以在 mysqld 启动时通过命令行增加相关选项或者通过 SET 语句来做到。详情请看“5.2.1 mysqld Command-Line Options”和“14.5.3.1 SET Syntax. ”。以下列出了部分结果,这些结果值可能与您的系统的值不一样。每个变量的值对应的意义详情请看“5.2.3 Server System Variables”。如何协调这些变量详情请看“7.5.2 Tuning Server Parameters”。
mysql SHOW VARIABLES;
+---------------------------------+------------------------------+
| Variable_name | Value |
+---------------------------------+------------------------------|
| back_log | 50 |
| basedir | /usr/local/mysql |
| bdb_cache_size | 8388572 |
| bdb_log_buffer_size | 32768 |
| bdb_home | /usr/local/mysql |
...
| max_connections | 100 |
| max_connect_errors | 10 |
| max_delayed_threads | 20 |
| max_error_count | 64 |
| max_heap_table_size | 16777216 |
| max_join_size | 4294967295 |
| max_relay_log_size | 0 |
| max_sort_length | 1024 |
...
| timezone | EEST |
| tmp_table_size | 33554432 |
| tmpdir | /tmp/:/mnt/hd2/tmp/ |
| version | 4.0.4-beta |
| wait_timeout | 28800 |
+---------------------------------+------------------------------+
可以使用 LIKE 分句列出匹配的变量:
mysql SHOW VARIABLES LIKE 'have%';
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| have_bdb | YES |
| have_innodb | YES |
| have_isam | YES |
| have_raid | NO |
| have_symlink | DISABLED |
| have_openssl | YES |
| have_query_cache | YES |
+--------------------+----------+