mysql占用空间过大

1.检查binlog ,可以设置默认保存10天
所有log有关字段

show variables like '%log%';

查看当前日志保存天数mysql8.0默认2592000秒,30天:
https://blog.csdn.net/vkingnew/article/details/81953350

show variables like '%expire%';

查看binlog日志大小限制,默认1G或512M

SHOW VARIABLES LIKE '%binlog_size%';

my.ini或cnf中有两个设置:
此方法需要重启mysql,两个都设置默认以秒为准

[mysqld]模块
binlog_expire_logs_seconds=604800   ##8.0设置7天
#expire_logs_days = 10    ## 日志保留天数
#max_binlog_size = 100M   ##日志滚动值

此方法不用重启

set global expire_logs_days=10
set binlog_expire_logs_seconds=604800

刷新日志

flush logs;
show master status

手动删除日志
https://www.jb51.net/article/109234.htm

PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); //清除3天前binlog日志BEFORE,变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。

2.DELETE FROM tb WHERE id = ''并不会释放空间,

查看数据库某个表占用空间,information_schema库,
不加and,查询库里所有的表

SELECT TABLE_NAME, (DATA_LENGTH+INDEX_LENGTH)/1048576, TABLE_ROWS FROM information_schema.tables WHERE TABLE_SCHEMA='ztoai' 
AND TABLE_NAME='test_ztoai_spider_logistics_routematrix_3_7'

进入相应库下优化表

OPTIMIZE TABLE test_ztoai_spider_logistics_routematrix_3_7

把原数据插入新表,把源表TRUNCATE TABLE 一下

TRUNCATE TABLE 表名

navicat for mysql 的 删减表 和清空表的区别
在执行速度上truncate的速度要大于delete,因为delete是逐行删除
还有一个,delete后不释放数据库空间,而truncate执行后,会释放空间

你可能感兴趣的:(23_mysql,mysql)