bigint和int对索引性能的影响差别大么?

寒冰2046 2011-07-06 09:59:20
现在有一个主键用unsigned int的,初步估计是够用的,不过还是有点担心。现在想换成bigint的,而bigint是8个字节的,比int大一倍。
参考手册中提到一个索引页的默认大小是16KB,那么是不是意味着:如果采用bigint类型,一个索引页只有保存16KB/8=2K条记录,而int可以保存4K条?


现在考虑的问题是bigint的索引性能是不是比int差较多?
...全文
1337 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shine333 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 linkor 的回复:]

引用 2 楼 shine333 的回复:

你的数据库真会出现这么大的量?

我的看法是,先用unsigned int。到了unsigned int都要溢出的时候,估计你早就分表/库了

另外,从索引性能来讲,肯定会有影响,比如加载相同数量的记录条数的索引进内存,内存占用肯定翻倍。也就是相同内存可以加载的信息少了,读取相同数量信息的次数翻倍,但由此带来的性能差距不是本质的影响。
数……
[/Quote]
分表,分库,不是简单的把一张表分开,然后ID还互相冲突
寒冰2046 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 acmain_chm 的回复:]

内在现在一般不是问题,无非是索引多放几个页。

理论上选择够用的就可以,如果可以预测,或者无法肯定 INT可以满足要求,则应该选择 BIGINT.
[/Quote]索引多放几个页不会在搜索时降低命中率么?不会影响性能?
shine333 2011-07-06
  • 打赏
  • 举报
回复
你的数据库真会出现这么大的量?

我的看法是,先用unsigned int。到了unsigned int都要溢出的时候,估计你早就分表/库了

另外,从索引性能来讲,肯定会有影响,比如加载相同数量的记录条数的索引进内存,内存占用肯定翻倍。也就是相同内存可以加载的信息少了,读取相同数量信息的次数翻倍,但由此带来的性能差距不是本质的影响。
rucypli 2011-07-06
  • 打赏
  • 举报
回复
对 索引会比原来大一倍

对索引的io是原来的两倍 毕竟还是一个数量级的
ACMAIN_CHM 2011-07-06
  • 打赏
  • 举报
回复
内在现在一般不是问题,无非是索引多放几个页。

理论上选择够用的就可以,如果可以预测,或者无法肯定 INT可以满足要求,则应该选择 BIGINT.
寒冰2046 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 shine333 的回复:]

你的数据库真会出现这么大的量?

我的看法是,先用unsigned int。到了unsigned int都要溢出的时候,估计你早就分表/库了

另外,从索引性能来讲,肯定会有影响,比如加载相同数量的记录条数的索引进内存,内存占用肯定翻倍。也就是相同内存可以加载的信息少了,读取相同数量信息的次数翻倍,但由此带来的性能差距不是本质的影响。
[/Quote]数据库的量不太可能占用完unsigned int,只是目前是想分段来用的,ID一般是断断续续的。段分小了不方便管理,分大了有可能一些段利用率太低而造成大量浪费甚至导致溢出,具体策略还在分析中。
另外,这个ID关联了相当多的表,是一直活跃的字段,即使分表、分库,也要保证ID的唯一性吧,所以分表或分库应该都不能解决问题。

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧