【发布时间】:2013-08-17 02:55:14
【问题描述】:
我有一组整数数据。第一个是数字 0,最后一个是 47055833459。从第一个到最后一个数字有 20 亿个,它们永远不会改变或添加。唯一插入 mysql 表的方法是将这些数据加载到其中。从那时起,它只会被读取。
我预测数据库表的大小约为 20Gb。我计划有两列:
id, data
Id 将是一个主键,自动递增 unsigned INT,data 将是一个 unsigned BIGINT
优化这两列只读数据的最佳方法是什么?我查看了其他类似的问题,但它们都考虑了写入速度和不断增加的表格。我使用的主机不支持 MySQL 分区,所以不幸的是,目前这不是一个选项。如果事实证明分区是唯一的方法,那么我将重新考虑一个新的主机。
该表只会被 id 列访问,因此数据列不需要索引。
总而言之,在 MySQL 中处理具有 20 亿行和两列的表的最佳方法是什么?没有分区,针对读取进行了优化?
【问题讨论】:
-
您在数据上运行什么样的查询?
-
唯一会在表上运行的查询是:“SELECT id, data FROM table WHERE id = $id LIMIT 1”,数据库用户也将被限制为只能选择
-
我认为您不需要
limit 1。将id声明为主键足以满足您的目的。 -
id 是为了在这个集合上表达某种有意义的顺序吗?或者它只是一个无意义的标识符,它从输入数字的顺序中获取它的顺序。
-
将 id 作为外键存储在别处而不是仅仅存储 BIGINT 本身的副本有什么好处?
标签: mysql optimization database-design query-optimization database-performance