首页 / MYSQL / 在MySQL中对数据库表进行分区
在MySQL中对数据库表进行分区
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在MySQL中对数据库表进行分区,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1835字,纯文字阅读大概需要3分钟。
内容图文
![在MySQL中对数据库表进行分区](/upload/InfoBanner/zyjiaocheng/897/78a64a15ae7e4adf964bd6b0c83fa654.jpg)
我正在编写一个数据仓库,使用MySQL作为后端.我需要根据两个整数ID和一个名称字符串对表进行分区.
一个更具体的例子是假设我正在存储有关学校的数据.我想根据COMPOSITE’Key’对school_data表进行分区,具体如下:
school id (integer)
course_id (integer)
student_surname (string)
对于学生姓氏,它只是姓氏的第一个字符,用于确定数据应该进入哪个“分区表”.
如何使用带有InnoDb表的MySQL(5.1)实现此要求?
另外,我正在Windows盒子上进行开发,但是我将部署到* nix盒子上进行生产.我还有两个问题:
>我假设在从Windows迁移到Linux时我必须转储和恢复数据.我不知道如果数据库包含分区表是否可以(指向它在文档中指出这一点的指针将让我放心 – 我无法找到有关分区表的转储/恢复的任何具体提及.
>我可能还需要更改数据库(如果Oracle对MySQL用户采取了意外行动),在这种情况下,我需要将数据导出到另一个数据库中.在这个(希望不太可能的场景) – 什么是最好的方式从MySQL转储数据(可能是文本或东西),同时考虑到分区表?
解决方法:
范围分区
按范围分区的表的分区方式是每个分区包含分区表达式值位于给定范围内的行.
CREATE TABLE employees (
school id (integer)
course_id (integer)
student_surname (string)
)
PARTITION BY RANGE (student_surname) (
PARTITION p0 VALUES LESS THAN ('ezzzzzzzzzzzzzzzzzzzzzzz'),
PARTITION p1 VALUES LESS THAN ('ozzzzzzzzzzzzzzzzzzzzzzz'),
PARTITION p2 VALUES LESS THAN ('tzzzzzzzzzzzzzzzzzzzzzzz'),
PARTITION p3 VALUES LESS THAN (MAXVALUE)
);
数据迁移到另一个数据库
MySQLDUMP将表和数据输出到文件.但是,Oracle supports connecting to other databases via ODBC就像SQL Server具有链接服务器功能一样.
附录
It looks like you are partitioning by only one of the 3 fields I mentioned (i.e. name). I saw partitioning by a single field in the MySQL docs, but not 3 fields (int, int, string) like I want to do.
可以通过三列进行分区,但我的示例符合OP中的要求:
For the student surname, it just the first character of the surname that determines which ‘partitioned table’ the data should go in to.
内容总结
以上是互联网集市为您收集整理的在MySQL中对数据库表进行分区全部内容,希望文章能够帮你解决在MySQL中对数据库表进行分区所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。