仅包含整数的大型数据库表的最佳选择(必须使用 SUM() 或 AVG() )
我目前正在 LAMP 下使用 MySQL 表进行在线游戏。
其中一张表很大(很快就有数百万行)并且只包含整数(ID、时间戳、布尔值、分数)。
我尽一切努力永远不必加入这张桌子。但是,我担心可扩展性。我正在考虑将这个单一表移动到另一个更快的数据库系统。 我使用中间表来计算分数,但在某些情况下,我必须直接对该表的某些筛选行集使用 SUM() 或 AVERAGE()。
对于您来说,该表的最佳数据库选择是什么?
我的要求/规格:
- 该表仅包含整数(大约 15 列)
- 我需要按某些列进行过滤
- 我希望拥有唯一的键
- 拥有“INSERT ... ON DUPLICATE UPDATE”可能会很好,但我想我的脚本可以自己管理。
- 我必须使用 SUM() 或 AVERAGE()
谢谢
I'm currently using a MySQL table for an online game under LAMP.
One of the table is huge (soon millions of rows) and contains only integers (IDs,timestamps,booleans,scores).
I did everything to never have to JOIN on this table. However, I'm worried about the scalability. I'm thinking about moving this single table to another faster database system.
I use intermediary tables to calculate the scores but in some cases, I have to use SUM() or AVERAGE() directly on some filtered rowsets of this table.
For you, what is the best database choice for this table?
My requirements/specs:
- This table contains only integers (around 15 columns)
- I need to filter by certain columns
- I'd like to have UNIQUE KEYS
- It could be nice to have "INSERT ... ON DUPLICATE UPDATE" but I suppose my scripts can manage it by themselves.
- i have to use SUM() or AVERAGE()
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
只需确保您有正确的索引,这样选择应该很快
Just make sure you have the correct indexes on so selecting should be quick
表中的数百万行并不是很大。如果您按照 @Tom-Squires 的建议对相关键建立索引,那么在选择、过滤或更新插入数据时就不应该出现任何问题。
不过,聚合查询(sum 和 avg)可能会带来问题。原因是它们需要全表扫描,因此需要多次从磁盘提取数据到内存。有几种提高速度的方法:
Millions of rows in a table isn't huge. You shouldn't expect any problems in selecting, filtering or upserting data if you index on relevant keys as @Tom-Squires suggests.
Aggregate queries (sum and avg) may pose a problem though. The reason is that they require a full table scan and thus multiple fetches of data from disk to memory. A couple of methods to increase their speed: