1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| #指定数据库的详细信息 SELECT TABLE_SCHEMA AS '数据库', TABLE_NAME AS '表名', TABLE_ROWS AS `行数`, ROUND( (DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS '总大小(MB)', ROUND(DATA_LENGTH / 1024 / 1024, 2) AS '数据大小(MB)', ROUND(INDEX_LENGTH / 1024 / 1024, 2) AS '索引大小(MB)', TABLE_ROWS AS '数据行数(估算值)' FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'y_back' ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC;
#数据库表的行数 SELECT TABLE_NAME AS '表名', TABLE_ROWS AS '估算行数', (SELECT COUNT(*) FROM y_back.t_work) AS '精确行数' FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'y_back';
#all SELECT table_schema AS '数据库', sum( table_rows ) AS '记录数', sum( TRUNCATE ( data_length / 1024 / 1024, 2 )) AS '数据容量(MB)', sum( TRUNCATE ( index_length / 1024 / 1024, 2 )) AS '索引容量(MB)' FROM information_schema.TABLES GROUP BY table_schema ORDER BY sum( data_length ) DESC, sum( index_length ) DESC;
#过滤元数据库 SELECT table_schema AS '数据库', SUM(table_rows) AS '记录数', TRUNCATE(SUM(data_length) / 1024 / 1024, 2) AS '数据容量(MB)', TRUNCATE(SUM(index_length) / 1024 / 1024, 2) AS '索引容量(MB)' FROM information_schema.TABLES WHERE table_schema NOT IN ( 'information_schema', 'mysql', 'performance_schema', 'sys' ) GROUP BY table_schema ORDER BY SUM(data_length) DESC, SUM(index_length) DESC;
ANALYZE TABLE - 更新统计信息 OPTIMIZE TABLE - 表优化重组俗称清理碎片
#造数据 CREATE TABLE `t_work_db01` ( `id` bigint NOT NULL AUTO_INCREMENT, `name` varchar(256) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `age` int DEFAULT NULL, `sex` char(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `money` float DEFAULT NULL COMMENT '金额', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=100001 DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC
DELIMITER $$ CREATE PROCEDURE InsertDummyData() BEGIN DECLARE i INT DEFAULT 0; WHILE i < 100000 DO INSERT INTO t_work (NAME, age, sex, money) VALUES ( CONCAT('User_', SUBSTRING(MD5(RAND()) FROM 1 FOR 8)), FLOOR(18 + RAND() * 48), IF(RAND() < 0.5, 'M', 'F'), ROUND(1000 + RAND() * 9000, 2) ); SET i = i + 1; END WHILE; END$$ DELIMITER ;
CALL InsertDummyData();
DROP PROCEDURE IF EXISTS InsertDummyData;
|