我有一个巨大的 mysql 表(用于日志记录)。像这样的东西:
记录器(sha1) 时间戳 Action
因此预计会有大约 10 万个记录器。每个日志记录平均说 100 行。这将使表格很快达到大约 1 亿行。
我需要快速完成插入(实际上是追加),因为很多记录器会同时写入条目。
通常查询是“给我按日期排序的记录器‘x’的所有日志”。
所以我打算使用 mysql 分区:http://dev.mysql.com/doc/refman/5.1/en/partitioning.html
我的问题是,如何找到分区数量和分区大小之间的平衡点?
由于记录器是一个 UUID 并且是一个 sha1 数字,我想让 mysql 只为每个 sha1 值创建一个分区,所以基本上每个记录器都会有自己的数据库表文件。
感谢任何其他建议
最佳答案
将某物拆分为指定数字的一种简单方法是使用取模函数。
因此,也许如果您采用 SHA1 哈希的前 4 个十六进制字符,将它们转换为整数(产生高达 65,025)和 mod 1024,如下所示:
aa00 % 1024 = 512
十进制
43520 % 1024 = 512
所有返回 512 的数字都可以放在同一个分区中。计算将产生 0 到 1023 之间的值。
关于mysql - 如何确定mysql分区数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11193450/