【发布时间】:2013-07-02 01:33:54
【问题描述】:
我有一个大约 20 列的表格。
-----------------------------------------------------------------
GUID_PK | GUID_SET_ID | Col_3 | Col_4 | ... | Col_20
-----------------------------------------------------------------
可能有数千个Sets,每个都有几十到不到一千条记录。集合中的记录都是相互关联的。集合是完全相互独立的。在一个大事务中一次读取/写入一整套。一旦记录被写入,它就永远是只读的,永远不会改变,只能读取。很少从该表中删除数据。删除时,一次性全部删除。
只有SET_ID 是传入的外键。 PK 是另一个表的传出外键。在详细表中,每条主记录保留大约 3 或 4 条记录(每个记录一个 blob)。
问题是:我应该对表进行分区吗?我认为是的。我的老板想得更好。他希望动态创建表格,每组一个主一个细节。我个人对动态创建的想法并不满意,但担心一张桌子统治所有人的架构。
批量插入和批量选择肯定会影响性能。批量删除将再次重新排序索引。什么是最佳结构?
【问题讨论】:
-
当你插入数据时,像
Col_x这样的所有列都会被填充?还是只是一些? -
@Stephan 一次性填充所有列。实际上,两列可以为空,有时但很少它们可能为空。但以后没有记录更新。已经完成的事情。
-
在这种情况下,您可以通过
GUID_SET_ID使用哈希dev.mysql.com/doc/refman/5.1/en/partitioning-hash.html 对表进行分区 -
但散列分区开始时接受固定数量的分区。我如何确定这个数字?是否有任何决策参数?最佳实践?
-
这取决于您每天收到的数据量
标签: mysql database-design partitioning large-data