文介绍如何在建表时只分库不分表。
假设已经建好的分库数为 8,建一张表,只分库不分表,分库方式为根据 id 列哈希。
CREATE TABLE multi_db_single_tbl(
id int,
name varchar(30),
primary key(id)
) dbpartition by hash(id);
查看该逻辑表的节点拓扑,可以看出在每个分库都创建了 1 张分表,既只做了分库。
mysql> show topology from multi_db_single_tbl;
+------+------------------------------------------------------------------+---------------------+
| ID | GROUP_NAME | TABLE_NAME |
+------+------------------------------------------------------------------+---------------------+
| 0 | SANGUAN_TEST_123_1488766060743ACTJSANGUAN_TEST_123_WVVP_0000_RDS | multi_db_single_tbl |
| 1 | SANGUAN_TEST_123_1488766060743ACTJSANGUAN_TEST_123_WVVP_0001_RDS | multi_db_single_tbl |
| 2 | SANGUAN_TEST_123_1488766060743ACTJSANGUAN_TEST_123_WVVP_0002_RDS | multi_db_single_tbl |
| 3 | SANGUAN_TEST_123_1488766060743ACTJSANGUAN_TEST_123_WVVP_0003_RDS | multi_db_single_tbl |
| 4 | SANGUAN_TEST_123_1488766060743ACTJSANGUAN_TEST_123_WVVP_0004_RDS | multi_db_single_tbl |
| 5 | SANGUAN_TEST_123_1488766060743ACTJSANGUAN_TEST_123_WVVP_0005_RDS | multi_db_single_tbl |
| 6 | SANGUAN_TEST_123_1488766060743ACTJSANGUAN_TEST_123_WVVP_0006_RDS | multi_db_single_tbl |
| 7 | SANGUAN_TEST_123_1488766060743ACTJSANGUAN_TEST_123_WVVP_0007_RDS | multi_db_single_tbl |
+------+------------------------------------------------------------------+---------------------+
8 rows in set (0.01 sec)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在阿里云的PolarDB-X(原名X-DB)分布式数据库中,实现只分库不分表的场景可以通过SQL语法来完成。您给出的例子已经很好地展示了如何创建一个逻辑表,并且仅根据id
列进行哈希分库,而不在每个库内进一步分表。
这里简要解析一下您的操作和相关命令:
创建逻辑表:通过CREATE TABLE
语句定义了一个名为multi_db_single_tbl
的表,包含两列id
和name
,其中id
是主键。这一步是创建表的基本操作。
指定分库策略:通过在CREATE TABLE
语句末尾添加dbpartition by hash(id)
来指定分库策略。这里使用了哈希分区方法基于id
列的值来决定数据存储到哪个分库中。这意味着数据会根据id
的哈希值均匀分布到预先设置好的8个分库中。
查看节点拓扑:使用show topology from multi_db_single_tbl;
命令来查看该逻辑表的物理部署情况。结果显示,在每个分库中都只有一张与逻辑表对应的物理表,验证了确实实现了“只分库不分表”的设计意图。
总结来说,要在阿里云PolarDB-X中实现只分库不分表,关键在于在创建表时明确指定分库策略而不涉及分表策略。上述示例中的SQL命令就是具体实践这一需求的方法。这种方式适用于那些需要水平扩展读写能力,但单表数据量不大,不需要进一步分表以优化单表性能的场景。