首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置MySQL表的最大行数?

如何设置MySQL表的最大行数?
EN

Stack Overflow用户
提问于 2011-11-08 17:01:11
回答 4查看 27.7K关注 0票数 14

我需要设置MySQL表中的最大行数限制。文档告诉我们,可以使用以下SQL代码来创建表:

代码语言:javascript
复制
CREATE TABLE `table_with_limit` 
   `id` int(11) DEFAULT NULL
) ENGINE=InnoDB MAX_ROWS=100000

但是MAX_ROWS属性并不是一个硬限制(“存储不超过100000行,删除其他行”),而是对数据库引擎的一个提示,即这个表将至少有100000行。

我看到的解决这个问题的唯一可能的方法是使用BEFORE INSERT触发器,它将检查表中的行数并删除较旧的行。但我很确定这是一个巨大的过热:/

另一种解决方案是使用cron脚本每隔N分钟清空一次表。这是一种最简单的方法,但它仍然需要注意另一个系统。

谁知道更好的解决方案?:)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-08 17:47:51

尝试限制向表中添加新记录。当要添加新记录时引发错误。

代码语言:javascript
复制
DELIMITER $$

CREATE TRIGGER trigger1
BEFORE INSERT
ON table1
FOR EACH ROW
BEGIN
  SELECT COUNT(*) INTO @cnt FROM table1;
  IF @cnt >= 25 THEN
    CALL sth(); -- raise an error
  END IF;
END
$$

DELIMITER ;

请注意,在大型InnoDb表上,计数操作可能会很慢。

在MySQL 5.5上,您可以使用SIGNAL // RESIGNAL语句来引发错误。

票数 12
EN

Stack Overflow用户

发布于 2011-11-08 18:24:20

  • 创建一个包含100,000行的表。
  • 在其中一个字段中预先填充了过去的“时间戳”。
  • 选择最旧的记录,在“创建”(更新)记录时更新“时间戳”。
  • 仅使用select和update -从不使用insert或delete。“时间戳”字段上的
  • 反向索引使选择/更新更快。
票数 5
EN

Stack Overflow用户

发布于 2011-11-08 17:06:53

在MySQL中,没有办法限制表的最大行数,除非您编写触发器来执行此操作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8048001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档