小编Nik*_*aya的帖子

MySQL .ibd 文件太大

我在 linux 中遇到内存问题。当我使用 df -hi 检查内存分配时,找到了一个路径 /dev/sda1 并且它被 100% 使用。当我挖掘更多时,我发现 /var/lib/mysql 文件几乎占用了所有内存。最后我遇到了一张扩展名为 .ibd 的表,几乎有 20GB。当我点击 sudo du -a | 排序-nr | 头命令,我终于找到了实际的表。它是这样的:

20937708        ./var/lib/mysql/databasename/tablename.ibd
Run Code Online (Sandbox Code Playgroud)

我不知道发生了什么。请帮帮我。由于存储问题,我的服务器几乎停止了。

mysql innodb

10
推荐指数
3
解决办法
2万
查看次数

检查 MySQL 中是否存在记录的最佳方法

我有一个程序应该检查特定日期范围内的记录是否存在,如果存在则获取记录,否则获取最后 20 条记录。

为此,我必须多次编写查询,一次用于检查存在性,然后获取相同的记录或获取没有 where 子句但有限制的记录。

查询在程序内部是这样的

set @cnt = (select count(*) from table where date_field between date1 and date2) ; 
if @cnt > 0 then 
    select * from table where date_field between date1 and date2 ; 
else 
    select * from table order by date_field desc limit 0,20 ; 
end if ;
Run Code Online (Sandbox Code Playgroud)

有什么办法可以在单个查询中完成,因为我的查询有太多连接并且太复杂,可能需要一些时间,所以如果我调用它两次,获取时间会增加。

mysql

5
推荐指数
1
解决办法
3万
查看次数

标签 统计

mysql ×2

innodb ×1