- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
下面的场景是否可能?
MySQL 版本 5.6.15
CREATE TABLE my_table (
id int NOT NULL AUTO_INCREMENT.
data1 int,
data2 timestamp,
PRIMARY KEY (id)
) ENGINE=InnoDB;
innodb_autoinc_lock_mode = 1
AUTO_INCREMENT=101
INSERT INTO my_table (data1, data2) VALUES (101, FROM_TIMESTAMP(1418501101)), (102, FROM_TIMESTAMP(1418501102)),
.. [200 个值总计] .., (300, FROM_TIMESTAMP(1418501300));
INSERT INTO my_table (data1, data2) VALUES (301, FROM_TIMESTAMP(1418501301));
SELECT id FROM my_table WHERE id >= 300;
— 将返回一行 (id=301)。SELECT id FROM my_table WHERE id >= 300;
— 将返回两行 (id=300, id=301)。换句话说,id=301的行有没有可能比id=300的行先被选中?
如果可能的话,如何避免呢?
最佳答案
为什么查询 A 的运行时间超过一秒?呸!是的,您所看到的正是我所期望的行为方式。
插入新行时会立即保留主键 101 到 300。这需要几毫秒。然后,它花费超过 1 秒的时间重建索引,在完成所有这些操作的一半时,您运行了另一个插入新行的查询,使用下一个可用的 auto_increment: 301。
正如 Alin Purcaru 所说,您可以通过更改锁定模式来避免此特定问题,但这会导致性能问题(查询 B 将花费 700 毫秒执行而不是 5 毫秒执行。
在高负载情况下,问题会呈指数级恶化,您最终会看到“连接过多”错误,从而有效地使整个数据库脱机。
还有其他罕见的情况,auto_increment 会给出“无序”的增量,这不会通过锁定来解决。
我个人认为最好的选择是使用 UUID 而不是 auto_increment 作为主键,然后有一个时间戳列(作为带有微秒的 double )来确定将哪些顺序行插入到数据库中。
关于mysql - 具有较大自动增量值的行是否可以比具有较小自动增量值的行出现得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27463580/
我正在通过 PHP 将 .csv 中的两行插入到表中。 我还会跟踪任何错误,如果发生错误,我不会提交事务。插入表后,我检索结果行的 ID(全部在一个事务中提交),并且 csv 的第一行对应于第二个 I
一个应用程序托管一个具有三个接口(interface)的 Web 服务,用于三个单独且独立的操作,所有这些操作都在应用程序的不同组件中实现,彼此独立,例如在不同的包等中,所以他们对彼此了解不多,只共享
我希望在单击特定表格数据单元格时同时选中单选按钮和单选按钮单击事件。我已经使用以下方法实现了这一点: $(document).ready(function() { $("td").click(
JSFiddle:https://jsfiddle.net/oyp1zxaq/ 本质上,我只是想在较大的 div 中放置四个具有定义宽度的较小 div,但我希望它们在其中间隔开。 我想知道是否有一种方
我在一个布局中有两个 View 。我将分别称它们为 View A 和 View B。 ┌──────┐ │┌─┐┌─┐│ ││A││B││ │└─┘└─┘│ └──────┘ 父布局(包括View A
我是一名优秀的程序员,十分优秀!