我有一个包含日志的数据库。每个日志在不同的时间内都处于活动状态,并且在活动时间内会持续添加日志。
这是一个非常简单的表,SHOW CREATE TABLE显示:
'TESTLOG', 'CREATE TABLE `TESTLOG` (
`Data` longtext NOT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=672 DEFAULT CHARSET=utf8'
表中的所有数据目前都是6.52 Mb,这很棒。但是服务器正在快速丢失可用空间,我将该位置追溯到/ var / lib / mysql / dbname /到TESTLOG idb文件。
参见例如
[root@server bin]# du -sh /var/lib/mysql/dbname/* | grep TESTLOG
12K /var/lib/mysql/dbname/TESTLOG.frm
1.2G /var/lib/mysql/dbname/TESTLOG.ibd
大约30分钟前,我不得不把桌子重新加载,因为它占用了所有空间。目前文件增长大约40-100 Mb /分钟。
我该怎么办?表格中数据的大小并没有快速上升。在过去的10-15分钟里,它的重量增加了大约40kb。我不知道这是怎么做的以及如何阻止它 - 昨天不是这样的,我想不出任何与测试日志有任何关系的事情。
我真的希望你能帮忙 - 这很糟糕! :)
/奔
答案 0 :(得分:0)
正如Marc B指出的那样,问题在未经注释的交易中存在。我的信念是多线程试图更新和读取多个事务,并以某种方式发生内部锁定。 DAL层中的互斥锁修复了问题:)