如何像我们在 hive 中一样为每个 id 分区 MySQL table
How to partition MySQL table for every id just like we do in hive
在我们的应用程序中,我们为每个查询构建一个唯一的查询 ID,并根据此查询 ID 插入到 table。
我们曾经为此使用 Hive,这很容易;
create table hivetable (
...
)PARTITIONED BY ( query_id INT ) ...
插入到 table 是这样的:
alter table hivetable add partition (query_id=?);
insert into hivetable partition(query_id=?) select ...;
现在我们要迁移到 MySQL,我很困惑。我在下面尝试 table 并像这样插入:
create table mytable (...) PARTITION BY HASH(query_id);
insert into mysql values(?,?,...,<query_id>);
显然它没有以我想要的方式工作。它将所有 query_ids 的数据插入一个分区中。
所以我真的很感激一些帮助
谢谢
这里是关于如何使用 Mysql Partitions 的文档。下面是一个使用哈希的例子。
警告: 如果不包含 PARTITIONS 子句,分区数默认为 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;
请勿使用 MySQL 的 PARTITIONing
完成此任务。只需让唯一的 query_id
成为 PRIMARY KEY
。然后 INSERT tbl
或 UPDATE tbl
或 SELECT ... FROM tbl
,视情况而定。
最后索引对我来说效果很好。由于固定到 select、删除操作,我们想像 Hive 分区一样使用 smth。我发现 MySQL 中的索引非常符合我们的需求。如果您索引您使用 where 语句的列,它将很好地固定您的查询。您可以在以下 link 中找到更多信息:https://dev.mysql.com/doc/refman/8.0/en/create-index.html
在我们的应用程序中,我们为每个查询构建一个唯一的查询 ID,并根据此查询 ID 插入到 table。 我们曾经为此使用 Hive,这很容易;
create table hivetable (
...
)PARTITIONED BY ( query_id INT ) ...
插入到 table 是这样的:
alter table hivetable add partition (query_id=?);
insert into hivetable partition(query_id=?) select ...;
现在我们要迁移到 MySQL,我很困惑。我在下面尝试 table 并像这样插入:
create table mytable (...) PARTITION BY HASH(query_id);
insert into mysql values(?,?,...,<query_id>);
显然它没有以我想要的方式工作。它将所有 query_ids 的数据插入一个分区中。 所以我真的很感激一些帮助 谢谢
这里是关于如何使用 Mysql Partitions 的文档。下面是一个使用哈希的例子。
警告: 如果不包含 PARTITIONS 子句,分区数默认为 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;
请勿使用 MySQL 的 PARTITIONing
完成此任务。只需让唯一的 query_id
成为 PRIMARY KEY
。然后 INSERT tbl
或 UPDATE tbl
或 SELECT ... FROM tbl
,视情况而定。
最后索引对我来说效果很好。由于固定到 select、删除操作,我们想像 Hive 分区一样使用 smth。我发现 MySQL 中的索引非常符合我们的需求。如果您索引您使用 where 语句的列,它将很好地固定您的查询。您可以在以下 link 中找到更多信息:https://dev.mysql.com/doc/refman/8.0/en/create-index.html