当Redis中清理了大量的Key之后原先Redis申请的内存(used_memory_rss)将继续持有而不会释放,此时查看内存信息将会看到存在大量的内存碎片。...那么,Redis的内存碎片可以清理么,该如何清理呢? 翻看了Redis的相关资料发现,Redis4版本之后开始支持内存碎片的清理,于是进行了一次测试,内容如下: 1....清理内存碎片 默认情况下自动清理碎片的参数是关闭的,可以按如下命令查看 127.0.0.1:6379> config get activedefrag 1) "activedefrag" 2) "no..." 启动自动清理内存碎片 127.0.0.1:6379> config set activedefrag yes OK 开启后再查看内存信息 127.0.0.1:6379> info memory #...相关参数配置说明 内存清理相关参数如下,可以使用config get的方式查看对应的值 # Enabled active defragmentation # 碎片整理总开关 # activedefrag
就需要定期清理, 人工清理一是麻烦, 二是容易出错 所以整了个清理日志的脚本. 脚本下载地址 1....见文末 脚本使用方法 配置下基本信息就行 懒点的只配置数据库信息也行. 注: 脚本不支持远程执行, 只能和数据库在一台服务器上....GENERAL_LOG_MAX_SIZE='524288000' #500MB GENERAL_LOG_TAR_EXPIRE_DAYS='60' GENERAL_LOG_TAR_DIR='' 运行脚本...image.png 配置定时任务(可选) crontab -e * 1 * * * sh /root/MysqlClearLog.sh 脚本内容 #!...GENERAL_LOG_MAX_SIZE='524288000' #500MB GENERAL_LOG_TAR_EXPIRE_DAYS='60' GENERAL_LOG_TAR_DIR='' #BINLOG 不支持, 就系统自动清理就行
大于1小于1.5:正常值,有一些内存碎片,但也可以提高性能,可以接受 大于1.5:说明内存碎片率比较大,需要考虑是否要进行内存碎片清理,要引起重视 小于1:内存不够redis用了,已经开始使用swap机制交换内存...,也就是使用硬盘了(swap可以在设置中禁用),需要考虑扩容redis了 如何清理内存碎片?...yes OK 自动内存清理的一些相关配置如下: # Enabled active defragmentation # 碎片整理总开关 # activedefrag yes # Minimum amount...100 当然,在面对一些复杂的场景时我们希望能根据自己设计的策略来进行内存碎片清理,redis也提供了手动内存碎片清理的命令: 127.0.0.1:6379> memory purge OK 总结...占有欲很高的的redis总是会留下已经不用的内存,这在生产环境中必然是不能接受的,所以内存碎片的清理非常重要
需求背景 解决某些中间件或者应用日志无法自动清理的情况,比如:Nacos 的 access 日志。...清理 30 天前的日志文件 sh clear-logs.sh -p /home/nacos/logs -d 30 使用场景 Nacos access 日志清理 crontab 定时任务设置 $ crontab...===== # header 总行数 SCRIPT_HEADSIZE=$(head -200 "${0}" |grep -n "^# END_OF_HEADER" | cut -f1 -d:) # 脚本名称...SCRIPT_NAME="$(basename "${0}")" # 版本 VERSION="0.0.1" # 默认保留 7 天 DAYS=7 # 脚本执行日志目录 CLEAR_LOGS_LOG_PATH...sed -e "s/^#%//g" -e "s/\${SCRIPT_NAME}/${SCRIPT_NAME}/g" -e "s/\${VERSION}/${VERSION}/g" } # 初始化创建脚本日志目录
json.log*) for log in $logs do ls -sh $log done echo -e "\033[44;37m 开始清理...for log in $logs do cat /dev/null > $log done echo -e "\033[44;37m 清理完毕
工作中本地maven仓库随着项目增多会变得越来越大,看着心烦,于是想着清理....没有发现很好的清理策略,只能从文件以及文件夹修改时间上入手,修改时间小于指定时间的文件夹以及文件都给删除,循环清理几次后仓库应该就干净了....附上清理脚本,实际上就是递归遍历文件夹然后判断文件更新时间,对比后决定是否要删除.首次清理后仓库从1.5G变为650M,清爽了不少.
]# mkdir mysqlbackup [root@localhost ~]# cd mysqlbackup/ [root@localhost mysqlbackup]# vi backup.sh 脚本内容...bash #存放目录 BackupDir=/root/mysqlbackup #数据库库名 DataBaseName=shell_test #日期命名 DateTag=`date +%Y%m%d` #sql脚本名字...mysqlbackup]# crontab -e 30 6 * * * /bin/bash /root/mysqlbackup/backup.sh >> /dev/null 2>&1 #每天早上6:30自动执行脚本进行数据库备份
pause 复制脚本代码到一个文本文件中,然后更改文件类型(如:文件名由“系统垃圾清理.txt”改为“系统垃圾清理.bat”),然后双击即可执行清理。
image.png 在长期的数据更改过程中,索引文件和数据文件,都会产生空洞和碎片,会降低索引的运行效率 查看碎片 SHOW TABLE STATUS LIKE '表名'; 当Data_free 列值大于...0时表示有碎片 修复方法 1. alter table xxx engine innodb/myisam 例如之前表的引擎是innodb,执行 alter table xxx engine innodb...,还是可以起到修复碎片作用的 2. optimize table 表名 这两种方法都会把所有的数据文件重新整理一遍,使之对齐 这个过程是比较耗资源的,不要频繁操作,可以按月为单位操作
一、背景 由于业务增长,频繁的备份还原对于磁盘空间有了更大的空间需求,基本每周500G的磁盘,空间使用率都会达到85%以上,故编写Oracle清理脚本结合crond自动清理Oracle归档日志。... #PATH可以根据实际环境,删除Apr月的所有归档日志 rm -rf `ls -l /home/oracle/app/arch/ |awk '{if (7<20) print 如果手动在磁盘清理过日志文件...expired archivelog all; #删除过期的归档日志 delete noprompt archivelog all; #清除所有的归档日志 三、自清理脚本...exit; EOF } main() { if [ ${disk_useper} -gt 80 ];then oracle_clean fi } main 配合定时任务清理磁盘...,此在脚本内写的判断磁盘使用率大于80%进行清理,也可根据自己需求进行判断,或每次都执行清理。
一、需求 生产上有40多个微服务部署的应用,每个应用都会产生日志,随着时间的增长,日志量不断增大,现需要清理。有两个重要的应用日志需保留90天,其它应用保留20天。...三、清理脚本 #!...log_directory2 -type f -mtime +$Days2 -exec rm {} \; find $log_directory3 -type f -mtime +$Days2 -exec rm {} \; 清理脚本原理...清理脚本执行前每个日志目录log_dir有121个日志文件,执行完清理脚本后对应的减少。...2>&1 本文所有脚本已上传github
MySQL之表碎片简介 今天简单讲讲MySQL中的表碎片,改天我们详细展开这个概念。...要想知道表的碎片的详细信息,我们首先需要观察一张表:information_schema中的tables表,如下: information_schema的tables表 对于mysql和Infobright...TABLE_COMMENT 创建表时使用的注释(或有关MySQL无法访问表信息的信息) 表碎片整理 上面tables表中提到的data_free字段,就是表碎片的一个指标,当我们发现了表存在碎片时...,有两种方法进行整理优化: 第一种是MySQL自身的优化:MySQL对数据进行扫描时,它扫描的对象实际是列表的容量需求上限,也就是数据被写入的区域中处于峰值位置的部分。...如果在一个碎片率很高的表进行新的插入操作,MySQL将尝试利用那些留空的区域,但是由于插入数据的不确定性,这些留空的内存区域仍然无法被彻底占用。
,MySQL会尝试使用空白空间,但如果某个空白空间一直没有被大小合适的数据占用,仍然无法将其彻底占用,就形成了碎片; (3)当MySQL对数据进行扫描时,它扫描的对象实际是列表的容量需求上限,也就是数据被写入的区域中处于峰值位置的部分...查看表碎片大小 (1)查看某个表的碎片大小 mysql> SHOW TABLE STATUS LIKE '表名'; 结果中’Data_free’列的值就是碎片大小 ?...where table_schema not in ('information_schema', 'mysql') and data_free > 0; 清除表碎片 (1)MyISAM表 mysql...中 information_schema.TABLES字段,查看 DATA_FREE 字段,大于0话,就表示有碎片 建议 清除碎片操作会暂时锁表,数据量越大,耗费的时间越长,可以做个脚本,定期在访问低谷时间执行...,例如每周三凌晨,检查DATA_FREE字段,大于自己认为的警戒值的话,就清理一次。
背景 经常使用 MySQL 的话,会发现 MySQL 数据文件的磁盘空间一般会不停的增长,而且有时候删了数据或者插入一批数据的时候,磁盘空间有时候还会毫无变化。...引发这个其妙现象的就是 MySQL 的表空间碎片。 什么是表空间碎片?...怎么查看表空间碎片 MySQL 的系统表记录了表空间的使用情况,可以用如下查询检查: SELECT CONCAT(table_schema,'.'...,data_free_pct 指这个表的碎片百分比,效果如下: mysql> SELECT CONCAT(table_schema,'.'...对于回收空间的问题 对一些日志表,或者是有区域性特征的表,建议使用 MySQL 的分区表来管理,需要清理一批数据的时候,可以用 partition truncate 的方式进行清理,磁盘空间也能直接释放掉
表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为空白 当执行插入操作时,MySQL会尝试使用空白空间,但如果某个空白空间一直没有被大小合适的数据占用,就形成了碎片 当MySQL扫描表时,扫描的对象实际是包含碎片空间的...查看表碎片大小 01 查看某个表的碎片大小 mysql> SHOW TABLE STATUS LIKE '表名'; 结果中'Data_free'列的值就是碎片大小 02 列出所有已经产生碎片的表...table_schema not in ('information_schema', 'mysql') and data_free > 0; 清除表碎片 01 MyISAM表 mysql> optimize...table 表名 02 InnoDB表 mysql> alter table 表名 engine=InnoDB 建议 清除碎片操作会暂时锁表,数据量越大,耗费的时间越长 可以做个脚本,定期在访问低谷时间执行...,例如每周三凌晨,检查DATA_FREE字段,大于自己认为的警戒值的话,就清理一次
清理hdfs小文件shell脚本 #!...small_file_paths[*]}) do path="${small_file_paths[$key]}${date_20days_ago}" echo "清理
借此延伸下MYSQL中Myisam、InnoDB碎片优化方式: Myisam清理碎片 OPTIMIZE TABLE table_name InnoDB碎片优化 if you frequently delete...using ‘alter table’ without actually changing anything: ALTER TABLE foo ENGINE=InnoDB; This is what MySQL...什么是mysql碎片?怎样知道表的碎片有多大呢?..., 一种是单行数据碎片, 另一种是多行数据碎片....中information_schema.TABLES字段,查看 DATA_FREE 字段,大于0话,就表示有碎片.脚本多长时间运行一次,可以根据实际情况来定,比如每周跑一次.
前言:在 MySQL 数据库中,随着数据的增删改操作,表空间可能会出现碎片化,这不仅会占用额外的存储空间,还可能降低表的扫描效率,特别是一些大表,在进行数据清理后会产生大量的碎片。...查看表碎片大小一般 MySQL 数据库都是开启 innodb_file_per_table 参数的,这代表每个表使用独立的表空间,即每个表的数据及索引存储在一个独立的 表名.ibd 文件里,如果某个表有大量碎片...首先我们要确定哪些表需要进行回收碎片操作,MySQL 系统表 information.TABLES 中的 DATA_FREE 字段显示的是可用的空闲空间量(单位:字节),它可以帮助你估计碎片的程度,如果...在这个过程中,MySQL 会对表进行重建,会回收掉未使用的空间。在 5.6 及以后的版本中,这个操作会使用 Online DDL ,减少对并发 DML 操作的影响。...总结:本篇文章介绍了如何查看 InnoDB 表的碎片以及如何进行回收。生产环境中,建议定期巡检 MySQL 系统中的表碎片,并在业务低峰期执行回收操作。
领取专属 10元无门槛券
手把手带您无忧上云