【发布时间】:2016-04-11 12:03:06
【问题描述】:
我想在一个足球奇幻游戏中尝试 MySQL Partitioning,用户分布在联赛中,每个联赛都有一个用户可以出售或购买球员的市场。当很多用户同时玩时,我在这张表中遇到了一些僵局(撰写本文时大约有 50K 联赛,每个联赛有大约 20 名玩家在市场上每两天刷新一次),所以我在想关于使用 MySQL Partitioning,我之前没用过。
这是我要分区的表:
CREATE TABLE `market` (
`leagueID` int(10) unsigned NOT NULL,
`playerID` smallint(5) unsigned NOT NULL,
`userID` int(10) unsigned DEFAULT,
`price` int(10) unsigned NOT NULL ,
`date` int(10) unsigned NOT NULL,
UNIQUE KEY `league_player` (`leagueID`,`playerID`),
KEY `user_date` (`userID`,`date`)
);
您推荐哪种方法(列、范围、分区数等)?
这是我最初的方法:
ALTER TABLE market
PARTITION BY HASH(leagueID)
PARTITIONS 10;
【问题讨论】:
-
在日期列上创建分区会更好
-
你能解释一下为什么吗?整个市场每两天刷新一次,因此日期列只会有新值。
-
如果您想了解有关分区的更多信息,请访问此处slideshare.net/datacharmer/mysql-partitions-tutorial/…
标签: mysql google-app-engine partitioning database-partitioning