InnoDB主键 - 自动增量与手动序列

时间:2014-07-30 20:30:09

标签: innodb sequence auto-increment

我在考虑以下情况:

应该实现库存历史表。 stockHistory引用了一个项目表,因此应该记录项目中每个库存的修改。

有两种可能性:


    1) stockHistoryId -> AUTO_INCREMENT
       itemId         -> refers to the item table

    2) itemId         -> reference to the item table
       sequence       -> sequence, increments uniquely per itemId

2的例子是:


    itemId sequence
    1      1
    1      2
    2      1
    2      2
    3      1
    3      2
    ...

如果我理解正确,则在InnoDb中使用PRIMARY Key存储在磁盘上。

因此,如果我使用第一种方法将AUTO INCREMENT Key作为主键,那么如果你“将来看得太远”会有一个性能损失。

例如,stockHistory可能如下所示:

stockHistoryId itemId
1              1
2              2
3              3
... (many other entries)
500000        1
.....
750000        1

因此itemId将在磁盘上保存为“碎片化”....

如果我使用其他方法,则不会出现碎片,因为每个方法都按磁盘上的itemId排序。

我完全错了还是这是正确的?很难掌握所有细节......

0 个答案:

没有答案