mysql - 如何确定mysql分区数

标签 mysql database partitioning mysql-management database-performance

我有一个巨大的 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/

相关文章:

php - Laravel 具有多种关系的 Eloquent 查询

mysql - 如何通过 Inner Join 来使用 Union

MySQL 查询 - 这里面有什么问题吗?

android - 如何在 TextView 中从 SQLite 中检索单个数据?

mysql - 查找多表 MySQL 数据库中缺失的行

algorithm - 如何对玩家进行分组?

mysql - 在 MySQL 中获取不同值计数的最佳方法

spring - 在 hibernate/spring 中的多个模式之间分区数据

python - 按条件对 numpy 数组进行就地分区

database - 进行更改后更新网格