3

我有一个巨大的 mysql 表(用于记录)。就像是:

记录器(sha1)时间戳操作

所以预计会有大约 10 万个记录器。每个日志记录平均说 100 行。这将使表很快达到大约 1 亿行。

我需要快速完成插入(实际上是附加),因为许多记录器一次写入条目。

通常查询将是“给我所有来自记录器'x'的日志,按日期排序”。

所以我打算使用mysql分区:http ://dev.mysql.com/doc/refman/5.1/en/partitioning.html

我的问题是,如何找到分区数量和分区大小之间的平衡?

由于记录器是一个 UUID 并且是一个 sha1 编号,我想让 mysql 只为每个 sha1 值创建一个分区,所以基本上每个记录器都有自己的数据库表文件。

任何其他建议表示赞赏

4

1 回答 1

1

将某物拆分为指定数字的一种简单方法是使用模数函数。

因此,也许如果您获取 SHA1 哈希的前 4 个十六进制字符,将它们转换为整数(最高为 65,025)和 mod 1024,如下所示:

aa00 % 1024 = 512

十进制

43520 % 1024 = 512

所有返回 512 的数字都可以放在同一个分区中。计算将产生从 0 到 1023 的值。

于 2012-06-25T16:56:56.690 回答