在我们针对每个查询的应用程序中,我们构建一个唯一的查询id,并根据这个查询id插入到表中。我们过去经常用蜂巢来做这个,这很容易;
create table hivetable (
...
)PARTITIONED BY ( query_id INT ) ...插到桌子上是这样的:
alter table hivetable add partition (query_id=?);
insert into hivetable partition(query_id=?) select ...;现在我们正在迁移到MySQL,我很困惑。我试着在下面的桌子下面插入如下:
create table mytable (...) PARTITION BY HASH(query_id);
insert into mysql values(?,?,...,<query_id>);很明显,它并没有以我想要的方式起作用。它将所有query_ids的数据插入到一个分区中。所以我非常感谢你的帮助
发布于 2021-11-26 08:06:33
最后,索引对我来说效果很好。我们想要使用smth类似的蜂巢分区,因为加快了选择,删除操作。我发现MySQL中的索引非常符合我们的需求。如果对使用where语句的列进行索引,它将很好地加快查询速度。您可以在以下链接中找到更多信息:https://dev.mysql.com/doc/refman/8.0/en/create-index.html
发布于 2021-10-18 13:39:31
以下是关于如何使用Mysql分区的文档。下面是一个使用散列的示例。
WARNING如果不包括分区子句,则分区数默认为1。
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY HASH(store_id)
PARTITIONS 4;发布于 2021-10-20 00:18:07
不要将MySQL的PARTITIONing用于此任务。只需拥有唯一的query_id就是PRIMARY KEY。然后是INSERT tbl、UPDATE tbl或SELECT ... FROM tbl,视情况而定。
https://stackoverflow.com/questions/69614152
复制相似问题