小编gip*_*ani的帖子

服务器重启后MySql自动增量计数器重置

我需要一种方法来保持 mysql 服务重启之间的自动递增计数器。

正如文档所述,重启 mysql 自动增量计数器默认从 max(id)+1 开始。如何保留最后一个自动增量值?

这对我来说是个大问题。我正在使用 envers 来保持实体审计。我得到的错误与我删除的“最后一行”一样多。

假设我开始将数据插入到一个空表中。假设插入 10 行。然后假设删除最后 8 个。在我的表中,我将有 2 个实体作为结果,id 分别为 1 和 2。在审计表中,我将拥有所有 10 个实体,ID 为 1 到 10:ID 为 3 到 10 的实体将有 2 个操作:创建操作和删除操作。

自动增量计数器现在在主表中设置为 11。重新启动mysql服务自动递增计数器变为3。所以如果我插入一个新实体,它将以id 3保存。但在审计表中已经有一个id = 3的实体。该实体已经被标记为创建和删除. 它会在更新/删除操作期间导致断言失败,因为 envers 无法处理这种不一致的状态。

谢谢

mysql innodb auto-increment mysql-5.5

6
推荐指数
1
解决办法
3148
查看次数

错误的估计行数

我正在尝试确定我有时在存储过程中遇到的问题。

我不得不说,存储过程在 select 子句中使用了 UDF(也许这就是问题的原因)但无论如何,不​​管它不是,下面是执行计划的一部分:

在此处输入图片说明

其中 Hash Match 的输出估计行数和非聚集索引 IX_Job_OperationID 上的 Index_Seek 估计值都是完全错误的:

在此处输入图片说明 在此处输入图片说明

我试图更新与索引 IX_Job_OperationID 相关的统计信息,即使使用 fullscan 选项,但它没有帮助。

UPDATE STATISTICS Job [IX_Job_OperationID] with fullscan
Run Code Online (Sandbox Code Playgroud)

我也在使用 recompile存储中选项,因为给定提供的参数,所涉及的数据集可能会发生很大变化。

有人能指出我正确的方向并帮助我理解为什么即使更新了统计数据,估计值与实际值相差甚远?

这里是实际执行计划的链接

该执行计划导致总共 8,610,665 次逻辑读取,而其他以某种方式选择的更好的计划可能约为 122,692

index sql-server statistics t-sql sql-server-2014

4
推荐指数
1
解决办法
6975
查看次数