Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10659
  • 博文数量: 7
  • 博客积分: 45
  • 博客等级: 民兵
  • 技术积分: 65
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-11 17:14
文章分类
文章存档

2013年(7)

我的朋友

分类: Mysql/postgreSQL

2013-03-07 11:02:58

mysql中的show是一个功能强大又好用的命令,主要用来查看数据库、表的各种信息及创建语句等。

1、  show databases; ======== 显示mysql中该用户可见的所有数据库名称。

2、  show tables [from database_name]; == 显示当前数据库中所有表的名称。

3、  show columns from table_name  [from database_name]; ======== 显示表中列名称,相当于desc table_name

4、  show grants for user_name; ======== 显示一个用户的权限,显示结果类似于grant 命令。

5、  show index from table_name; ======== 显示表的索引,只能看一个表的索引,没法看多个表的索引 (是否有该方法???)。

6、  show status; ======== 显示一些系统特定资源的信息,例如,正在运行的线程数量。

7、  show variables; ======== 显示系统变量的名称和值。

8、  show processlist; ======== 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。

9、  show table status; ======== 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间。

10、 show privileges; ======== 显示服务器所支持的不同权限。

11、 show create database database_name; ======== 显示数据库database_name的创建语句。

12、 show create table table_name; ======== 显示表table_name的创建语句。

13、 show engies; ======== 显示安装以后可用的存储引擎和默认引擎。

14、 show innodb status; ======== 显示innoDB存储引擎的状态。

15、 show logs; ======== 显示BDB存储引擎的日志。

16、 show warnings; ======== 显示最后一个执行的语句所产生的错误、警告和通知。

17、 show errors; ======== 只显示最后一个执行语句所产生的错误。

18、 show [storage] engines; ======== 显示安装后的可用存储引擎和默认引擎。

19、 show procedure status; ======== 显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等.

20、 show create procedure pro_name; ======== 显示某一个存储过程的详细信息

附:

show processlist命令说明:

用show processlist 查看当前运行状态。 

mysql> show processlist; 


+-----+-------------+--------------------+ 


| Id | User | Host | db | Command | Time| State | Info 

+-----+-------------+--------------------+ 

|207|root |192.168.0.20:51718 |mytest | Sleep | 5 | | NULL 


|208|root |192.168.0.20:51719 |mytest | Sleep | 5 | | NULL 


|220|root |192.168.0.20:51731 |mytest |Query | 84 | Locked | 


select bookname,culture,value,type from book where id=001 


先 简单说一下各列的含义和用途,第一列,id,不用说了吧,一个标识,你要kill一个语句的时候很有用。user列,显示单前用户,如果不是root,这 个命令就只显示你权限范围内的sql语句。host列,显示这个语句是从哪个ip的哪个端口上发出的。呵呵,可以用来追踪出问题语句的用户。db列,显示 这个进程目前连接的是哪个数据库。command列,显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接 (connect)。time列,此这个状态持续的时间,单位是秒。state列,显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态 的描述,请注意,state只是语句执行中的某一个状态,一个sql语句,已查询为例,可能需要经过 copying to tmp table,Sorting result,Sending data等状态才可以完成,info列,显示这个sql语 句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据。 


这个命令中最关键的就是state列,mysql列出的状态主要有以下几种: 


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 已经处理完了所有待处理的插入操作,正在等待新的请求。 

大部分状态对应很快的操作,只要有一个线程保持同一个状态好几秒钟,那么可能是有问题发生了,需要检查一下。 

还有其它的状态没在上面中列出来,不过它们大部分只是在查看服务器是否有存在错误是才用得着

阅读(174) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~