可直接在mysql命令行执行:show engine innodb status\G
查看造成死锁的sql语句,分析索引情况,然后优化sql然后show processlist
show status like ‘%lock%’
show OPEN TABLES where In_use >0这个语句记录当前锁表状态
另外可以打开慢查询日志,linux下打开需在my.cnf的[mysqld]里面加上以下内容:
slow_query_log=TRUE(有些mysql版本是ON)
slow_query_log_file=/usr/local/mysql/slow_query_log.txt
long_query_time=3
扩展资料:MySQL锁定状态查看命令
Checking table:正在检查数据表(这是自动的)。
Closing tables:正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表。这是一个很快的 *** 作,如果不是这样的话,就应该确认磁盘空间是否已经满了或者磁盘是否正处于重负中。
Connect Out:复制从服务器正在连接主服务器。
Copying to tmp table on disk:由于临时结果集大于tmp_table_size,正在将临时表从内存存储转为磁盘存储以此节省内存。
Creating tmp table:正在创建临时表以存放部分查询结果。
deleting from main table:服务器正在执行多表删除中的第一部分,刚删除第一个表。
1. 查看数据库的索引空间大小在MySQL Workbench中运行以下SQL语句:
— 以GB为单位
SELECT
CONCAT(ROUND(SUM(index_length)/(1024*1024*1024), 6), ‘ GB’) AS ‘Total Index Size’
FROM
information_schema.TABLES
WHERE
table_schema LIKE ‘database’
— 以MB为单位
SELECT
CONCAT(ROUND(SUM(index_length)/(1024*1024), 6), ‘ MB’) AS ‘Total Index Size’
FROM
information_schema.TABLES
WHERE
table_schema LIKE ‘database’
其中,database是待查看数据库的名称,例如:lsqdb%。运行结果如下图所示:
2. 查看数据库的数据空间大小
在MySQL Workbench中运行以下SQL语句:
— 以GB为单位
SELECT
CONCAT(ROUND(SUM(data_length)/(1024*1024*1024), 6), ‘ GB’) AS ‘Total Data Size’
FROM
information_schema.TABLES
WHERE
table_schema LIKE ‘database’
— 以MB为单位
SELECT
CONCAT(ROUND(SUM(data_length)/(1024*1024), 6), ‘ MB’) AS ‘Total Data Size’
FROM
information_schema.TABLES
WHERE
table_schema LIKE ‘database’
其中,database是待查看数据库的名称,例如:lsqdb%。运行结果如下图所示:
3. 查看数据库中所有表的信息
在MySQL Workbench中运行以下SQL语句,查看数据库中所有表的表名、表行数、数据空间大小、索引空间大小和总大小:
SELECT
CONCAT(table_schema,’.’,table_name) AS ‘Table Name’,
table_rows AS ‘Number of Rows’,
CONCAT(ROUND(data_length/(1024*1024),6),’ MB’) AS ‘Data Size’,
CONCAT(ROUND(index_length/(1024*1024),6),’ MB’) AS ‘Index Size’,
CONCAT(ROUND((data_length+index_length)/(1024*1024),6),’ MB’) AS’Total Size’
FROM
information_schema.TABLES
WHERE
table_schema LIKE ‘database’
其中,database是待查看数据库的名称,例如:lsqdb%。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)