MySQL:实用 SQL 语句集合

写在前面的话

本文主要用于记录工作中不经常使用但是偶尔用到又非常有用的 SQL 语句,持续不断不定期更新。

数据库大小统计

1. 查看 MySQL 某个库的所有表大小,记录数,占用空间等。

SELECT TABLE_NAME,DATA_LENGTH,INDEX_LENGTH,(DATA_LENGTH+INDEX_LENGTH) as length,TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,3), 'MB') as total_size FROM information_schema.TABLES WHERE TABLE_SCHEMA='库' order by length desc;

结果如图:

DATA_LENGTH:数据大小

INDEX_LENGTH:索引大小

TABLE_ROWS:记录数

total_size:占用空间

2. 查看某个库中单个表:

select concat(round(sum(data_length/1024/1024),2),'MB') as TABLE_SIZE from information_schema.tables where table_schema='库名' and  table_name='表名';

结果如图:

3. 查看单个数据库整体大小:

select concat(round(sum(data_length/1024/1024),2),'MB') as DATABASE_SIZE from information_schema.tables where table_schema='库名';

结果如图:

4. 统计数据库总大小:

select concat(round(sum(data_length/1024/1024),2),'MB') as DATA_SIZE from information_schema.tables;

结果如图:

超时时间设置

1. 查看数据库的超时时间:

SHOW GLOBAL VARIABLES LIKE '%timeout';

结果如图:

红色部分的超时时间为经常搞事情的,建议改大一点!

2. 直接调整超时时间:

SET GLOBAL net_write_timeout=28800;
SET GLOBAL net_read_timeout=6000;
SET GLOBAL connect_timeout=6000;
SET GLOBAL long_query_time=100;
SET GLOBAL wait_timeout=600000;
SET GLOBAL interactive_timeout=600000;

当然,如果你想永久生效,需要写到 my.cnf 配置中去。 

原文地址:https://www.cnblogs.com/Dy1an/p/11162604.html