Roy*_*son 11 sql postgresql indexing
我知道 UUID 和递增整数通常用作主键。我正在考虑使用 nanoids,因为它们是 URL 友好的,而不是可猜测的/可强力抓取的(如递增整数)。
是否有任何理由不使用 nanoids 作为像 Postgres 这样的数据库中的主键?(例如:也许它们会大大增加查询时间,因为它们没有......对齐或其他什么?)
Bil*_*win 11
大多数数据库使用递增 id,因为将新值插入到基于 B 树的索引末尾会更有效。
如果将新值插入 B 树中间的随机位置,则可能必须拆分 B 树非终端节点,这可能会导致下一个更高级别的节点分裂,依此类推,直到B 树的顶部。
这也有更大的风险导致碎片,这意味着索引为相同数量的值占用更多空间。
阅读https://www.percona.com/blog/2015/04/03/illustration-primary-key-models-in-innodb-and-their-impact-on-disk-usage/以获得有关权衡的可视化效果在主键中使用自动增量与使用 UUID 之间的区别。
该博客是关于 MySQL 的,但同样的问题也适用于任何基于 B 树的数据结构。
| 归档时间: |
|
| 查看次数: |
6889 次 |
| 最近记录: |