针对项目现有数据库进行数据分区可用的方式及其利弊:
1)RANGE方式分区:
PARTITION BY RANGE (id)
(PARTITION pt1 VALUES LESS THAN (10) COMMENT = 'host "127.0.0.1", port "6001"' ENGINE = SPIDER,
PARTITION pt2 VALUES LESS THAN (20) COMMENT = 'host "127.0.0.1", port "6002"' ENGINE = SPIDER,
PARTITION pt3 VALUES LESS THAN MAXVALUE COMMENT = 'host "127.0.0.1", port "6003"' ENGINE = SPIDER)
好处:①不需要对现有的数据做任何手动分割,只给需要分区的表格制定主键id的分区范围即可;
②后期维护简单,比如以后要追加数据库服务器了,也只需更改分区规则即可;
弊端:如果用户在使用应用程序过程中删除了node1中的大部分甚至是全部数据,
而以后新规数据的ID肯定又不符合node1对应的pt1分区规则,这样会导致node1变成一个空壳服务器。
2)LIST方式分区
PARTITION BY LIST(mod(id, 3))
PARTITION pt1 VALUES IN (0),
PARTITION pt2 VALUES IN (1),
PARTITION pt3 VALUES IN (2)
);
好处:不存在RANGE方式分区中所提到的弊端;
弊端:①需要对现有需要分区的数据表格进行手动数据分割,然后再用spider引擎进行按规则分区;
②后期维护困难,如果分区后的服务器还是不堪重负,需要追加数据库服务器时,
此时不断要需要重新制定分区规则,而且以前的数据表还需要按照新的规则进行手动分割;
3)RANGE & HASH 复合分区方式:
PARTITION BY RANGE (id) SUBPARTITION BY HASH (id)(
PARTITION pt1 VALUES LESS THAN (10)
(SUBPARTITION st1 COMMENT = 'host "127.0.0.1", port "6001"' ENGINE = SPIDER,
SUBPARTITION st2 COMMENT = 'host "127.0.0.1", port "6001"' ENGINE = SPIDER),
PARTITION pt2 VALUES LESS THAN MAXVALUE
(SUBPARTITION s20 COMMENT = 'host "127.0.0.1", port "6002"' ENGINE = SPIDER,
SUBPARTITION s21 COMMENT = 'host "127.0.0.1", port "6003"' ENGINE = SPIDER)
)
#复合分区时,母分区一般是RANGE和LIST分区,子分区一般是HASH和KEY分区。且各母分区的子分区个数必须相同。
好处:不会对现有的数据做任何手动分割;
弊端:①会查出多条重复的现有数据,如果想避免这个问题,则需要修正应用层,这个是极端不可取的做法;
②后期维护困难,如果分区后的服务器还是不堪重负时,就需要追加数据库服务器。
此时不断要需要重新制定分区规则,而且以前的数据表还需要按照新的规则进行手动分割;
综上所述,还是推荐采用RANGE方式分区,理由如下:
RANGE方式分区改动最小,而且后期维护简单。
至于它的弊端,只是存在理论当中,实际中应该不会出现几千万条数据都被用户删除的情况。
分享到:
相关推荐
"新浪基于MySQL的分布式数据库实践1" 分布式数据库实践是指在多个服务器上部署和管理数据库,以提高数据库的性能、可扩展性和可靠性。在这个实践中,新浪使用了基于MySQL的分布式数据库实践,实现了高性能、可扩展...
### MySQL分区分表方案实践手册知识点详述 #### 一、MySQL分区简介 数据库分区是一项重要的物理数据库设计技术,主要用于优化数据库性能并简化数据管理。MySQL的分区主要包括两种形式:水平分区和垂直分区。 - **...
MySQL数据库基础实例教程是针对初学者的一套系统性学习资源,尤其适合想要了解数据库管理和开发的人群。本教程分为多个章节,涵盖了从基础到进阶的各个关键领域,旨在通过实例教学来帮助学习者深入理解MySQL的核心...
MySQL官方测试数据库是一个非常有价值的资源,对于学习和测试MySQL数据库管理系统的用户来说是不可或缺的工具。这个数据库包含了大量的数据记录,可能涉及多个表,旨在帮助用户进行实际操作练习,了解SQL查询、...
MySQL数据库是世界上最受欢迎的开源关系型数据库之一,广泛应用于各种规模的企业、网站和应用程序中。本书《MySQL数据库应用从入门到精通_第2版》旨在帮助读者从零基础开始,逐步掌握MySQL的使用技巧和高级功能,...
2. **数据导出**:使用MySQL的`mysqldump`命令,将MySQL数据库的数据和结构导出为SQL脚本。例如: ``` mysqldump -u [username] -p[password] [database_name] > dump.sql ``` 这会创建一个包含CREATE TABLE语句...
7. **备份与恢复**:学习如何备份MySQL数据库以防止数据丢失,以及在出现问题时如何恢复数据。 8. **视图与存储过程**:视图可以简化复杂查询并提供安全性,存储过程则可以封装重复的SQL操作,提高代码复用性和执行...
MySQL数据库系统设计实现与管理是数据库领域的一门重要课程,主要涵盖了数据库的基础理论、设计方法、实施技巧以及管理策略。第六版的教材深入浅出地介绍了MySQL这一流行的开源关系型数据库管理系统,为学习者提供了...
通过以上知识点的学习,可以帮助考生系统地掌握MySQL数据库的相关理论与实践技能,为参加MySQL数据库考试打下坚实的基础。同时,这些知识点也适用于日常工作中对于MySQL数据库管理和维护的需求。希望每位学习者都能...
MySQL数据库中文参考手册是一部详尽且全面的指南,旨在帮助用户理解和掌握MySQL数据库管理系统的核心功能和操作。MySQL是一种广泛使用的开源关系型数据库系统,以其高效、稳定和易于使用而受到全球开发者的青睐。CHM...
最后,课程标准可能还包含相关的实验和项目,让学生有机会亲手实践,将理论知识转化为实际技能,从而更好地理解和掌握MySQL数据库的使用。 通过《MySQL数据库原理及应用(第2版)(微课版)》,你将能够构建扎实的...
在这个“mysql数据库总结”中,我们将深入探讨MySQL的关键概念、操作以及最佳实践。 首先,让我们了解MySQL的基础知识。MySQL基于SQL(结构化查询语言),它允许用户通过简单的命令进行数据的查询、更新和管理。当...
以上只是MySQL数据库应用的基础知识,实际上MySQL还支持更复杂的查询、事务处理、存储过程、触发器、分区等功能,这些都需要深入学习和实践才能熟练掌握。在实际项目中,理解并灵活运用这些知识将有助于构建高效、...
《逐步精通MySQL数据库》 MySQL是一种广泛使用的开源关系型数据库管理系统,它以其高效、稳定和易用性在各种规模的企业和项目中占据了重要的地位。学习MySQL数据库是IT行业的必备技能之一,无论你是初学者还是寻求...
MySQL数据库开发技术手册是一本深度探讨MySQL数据库设计与开发的宝贵资源,对于任何希望深入了解或提升MySQL技能的开发者来说,都是不可或缺的工具。MySQL是一种广泛使用的开源关系型数据库管理系统,以其高效、稳定...
### 基于MySQL的分布式数据库实践 #### 一、分布式数据库实践背景 随着互联网业务的不断扩张,传统的单体数据库已经无法满足日益增长的数据处理需求。为了应对高并发、大数据量的情况,分布式数据库应运而生。...
本文将深入探讨MySQL数据库在这些方面的实践。 首先,数据库实施是数据库生命周期中的一个重要阶段,它发生在概念设计、逻辑设计和物理设计之后。实施阶段主要包括以下任务: 1. **数据载入**:在数据库结构建立后...
8. 备份与恢复:讲解如何对MySQL数据库进行备份,并在需要时恢复数据。 9. 主从复制:介绍MySQL的主从复制机制,用于数据冗余和负载均衡。 10. 其他高级主题:如分区、触发器、事件调度器等。 总的来说,《MySQL....