`

数据库优化案例讲解——表分区

阅读更多
  对数据库的优化一直是很多大型网站运营过程中必须应对的重要问题。比如,在2012 年3 月底本人有参与开发了一个A省的省级的政务信息公开发布系统,经过了4个月的功能开发和测试之后,该系统正式上线了,由于该系统采用的是地区分站模式,按照“省-市-县-镇-村”的站点模式,由GVM主导,该系统在A省的所 有地区很快就开始推广使用,随着每日发布的政务公开信息逐步增加,结果2个月之后,发现系统曾出现过慢查询的问题。按照初步计算,A省共有15000多个 行政村,1200个镇,100个县与9个市,假设每个村、镇、县、市、省每日发布信息各10条,那么每日的信息发布数量将达到 (15000+1200+100+9+1)*10=163100条数据,那么1个月的数据量将达到163100*30=4893000︾5000000, 那么两个月将达到10000000条,一年将达到上亿条的数据量。面对着这么大的数据量,查询效率也会成为系统的一个性能的瓶颈。


  在两个月的时间内,数据库达到千万级的信息条数是一个较大的数据量。特别是在刚开始的1-2个月的过程中,我们还能够在5秒左右的时间范围内对信息进行查询,可是随着信息 量的逐步增加,现在每次的信息汇总和报表都要进行较长的时间等待,最多的达到20多秒。核对了下当初选择的服务器性能配置是没有问题的,那么这个时候我们只有通过优化数据库的结构来提升数据的查询效率了。


  数据库结构的优化有多种方法,主要的有两种,一是利用存储过程来代替常用的SQL查询语句;另一种是使用数据库管理系统中的分区表方法进。使用存储过程的优化方法有执行速度快的优点,但是其本身不利于调试、没有办法使用数据库缓存机制等缺点,所以在系统安全性和性能要求更高的情况下,建议使用分区表的方法。但要注意:并不是只要数据量就够多就需要通过数据库分区表来提高查询效率,而是要在数据是分段的前提下,我们才需要考虑到是否需要使用分区表。很显然,结合上述的例子,政务信息公开发布系统,发布的信息是按时间段进行查询的,所以我们可以进行数据库表分区。


  数据库的表分区有两种方式,水平表分区和垂直表分区。


  水平分区的目的是将一个表分为多个表。每个表包含的列数(表字段)都是相同的,但是记录数(数据行)会减少。比如,我们可以将一个包含1亿行记录的数据库表,按照水平分区的方式,分成12个小表,每个小表分别表示这一年份内从1月到12月的数据。这样,任何需要查询特定月份数据的查询只需查询相应月份的表,而避免从存储在1个大表中的所有月份的数据进行查询。根据SQL语句的执行效率,毫无疑问,从小表中的查询效率会远远高于从大表中查询的效率。垂直分区方式则与水平分区方式相反,从纵向进行分区,是将一个原始表分成多个只包含较少列的表。在日常的应用中,水平分区可以说是最常用的分区方式,所有下面我们以水平分区方式来介绍。


  用最简单话说,数据库分区表就是将一个大表分成许多个小表。这里,我们以政务信息公开表为例,该表记录着所有时间段内发布的政务信息,那么我们就可以进行水平分区,把这个大的信息表按时间分成几个小表,假设这里分成10个小表。2012年、2013年、2014年…2021年。那么,如果你想查询哪个年份的记录,就可以去相对应的表里进行检索,由于每个表中的记录数,会比一个大表记录数少了很多,其查询效率也会得到明显的提高。


  但我们还应该注意到,如果按照一个大表分成几个小表的处理方式,会给软件开发人员增加代码编程上的负担和难道。以记录增加或修改为例,以上10个表是独立的10个表,在不同时间进行记录增加或修改操作的时候,编程人员需要使用不同的SQL语句。例如在2012年添加记录时,程序员要将记录添加到2012年那个表里; 在2013年添加记录时,程序员要将记录添加到2013年的那个表里。这样,编程人员的工作量会增加,出现程序错误的可能性也会增加。那么这种情况下我们该如何进行水平分区呢?


  使用分区表就可以很好的解决上面问题。分区表可以从物理上将一个大表分成 几个小表,但是从逻辑上来看,还是一个大表。分区表可以将一个信息记录表分成若干个物理上的小表,但是对于编程人员而言,他们所面对的依然是一个大表,无论是2012年记录添加还是2013年记录添加,对于编程人员而言是不需要考虑的,他只要将记录插入到信息记录表(逻辑意义上的大表)里就行了。


  对应数据库分区表的操作,不同的数据库都有各自创建数据库分区的方法,比如微软的数据库SQL Server就可以实现数据库分区表的操作,通过相关的设置后就可以实现数据库的分区操作。使用SQL Server创建分区表的具体操作步骤可以使用SQL命令,也可以使用数据库本身自带的向导来完整数据库分区操作。
分享到:
评论

相关推荐

    数据库设计PPT——教学用的

    这份名为"数据库设计PPT——教学用的"的资源是为学习者准备的,它全面讲解了数据库设计的基础和重要性,是深入理解这一主题的宝贵资料。 在数据库设计中,我们首先会接触到**概念设计**,这是将业务需求转化为数据...

    《数据库系统原理与应用——Oracle版》-电子教案.rar

    9. 数据库性能调优:讲解如何通过查询优化、索引优化、表分区等手段提升数据库的运行效率。 10. 实践案例:可能包含实际的Oracle数据库配置、数据库应用程序开发以及故障排查等实例,以增强学生的实践能力。 电子...

    Oracle SQL优化实例讲解.pdf

    16. 分区表实例讲解 分区表是将一个大表按照某种标准分成若干个较小的部分。在查询时,可以根据分区键来限制扫描范围,从而提升性能。 17. 分区索引实例讲解 分区索引是对应于分区表的索引,它同样可以被分为多个...

    深入解析Oracle——DBA入门、进阶与诊断案例

    《深入解析Oracle——DBA入门、进阶与诊断案例》是一本专为Oracle数据库管理员(DBA)设计的详尽指南。这本书旨在帮助初学者掌握Oracle数据库的基本操作,并引导有经验的DBA深入理解Oracle的高级特性,同时提供实用...

    基于ORACLE数据库的SQL性能优化.pdf

    总结来说,《基于ORACLE数据库的SQL性能优化》这篇文档为我们提供了Oracle数据库SQL性能优化的全面指导,从理论到实践,结合具体案例分析了数据库逻辑结构、物理存储结构优化、使用分区等策略,并进一步讲解了SQL...

    王珊 数据库 精品课程课件

    王珊教授会介绍关系数据库理论的基石——Codd的十二定律,这些定律定义了关系数据库的规范和标准。我们将理解规范化理论,包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及BCNF(巴斯-科德范式),以及...

    MySQL数据库应用案例视频教程下载第19讲 MySQL Cluster.zip

    MySQL Cluster是一种分布式数据库系统,采用数据复制和分区策略来实现故障切换和负载均衡。这一讲将深入探讨以下知识点: 1. **MySQL Cluster的基本概念**:讲解MySQL Cluster的核心组成部分,包括管理节点(NDB ...

    仲恺农业工程学院数据库ppt

    7. **数据库性能优化**:讲述如何通过索引、查询优化、存储过程和分区等手段提升数据库的性能。 8. **分布式数据库**:随着云计算的发展,分布式数据库的重要性日益凸显。PPT可能会讲解分布式数据库的原理,如CAP...

    sql数据库设计教程

    8. 数据库优化:包括查询优化,如使用EXPLAIN分析查询执行计划,调整索引,以及数据库架构优化,如分区和分片。 9. 实战项目:通过实际案例,学习如何根据需求分析,设计数据库结构,编写SQL脚本,以及解决可能出现...

    数据库设计指南PDF

    5. **数据库物理设计**:讨论存储结构、索引、分区等物理层面的设计,以优化查询性能和存储效率。 6. **数据库建模工具**:介绍常见的数据库建模工具,如MySQL Workbench、Oracle SQL Developer等,以及如何使用...

    数据库原理及应用 电子书

    9. **数据库性能优化**:探讨索引、查询优化器、存储过程、分区和集群等技术,以提高数据库的运行效率。 10. **分布式数据库**:介绍分布式数据库的概念,包括分片、复制、分布式事务处理和一致性模型。 11. **...

    Asp.Net 网站优化系列之数据库优化 分字诀 分表(纵向拆分,横向分区)

    在上一篇中我们已经讨论了分库的概念,本篇文章将着重讲解另一种重要的数据库优化方法——分表。分表技术可以进一步提高系统的整体性能。其中,**纵向分表**是一种常见的实现方式。 ##### 纵向分表定义 纵向分表指...

    数据库课件数据库课件

    7. **数据库性能优化**:讨论索引的使用、查询优化、数据库分区和分片,以提升数据库的读写速度和整体性能。 8. **数据库体系结构**:讲解分布式数据库、云数据库和主从复制等架构,以及它们在大规模数据处理中的...

    Oracle优化日记-一个金牌dba的故事

    他还讲解了如何通过调整初始化参数、设置合适的统计信息、优化表分区等手段,来改善系统整体性能。 此外,书中还涉及到了Oracle的并行处理、内存管理、以及资源调度策略,这些都是大型系统中不可或缺的优化手段。...

    数据库系统原理 沈钧毅

    10. **数据库性能调优**:包括索引设计、查询优化、存储优化、分区和分片策略等,以提升数据库的读写速度和整体性能。 11. **分布式数据库**:在多个物理位置上分布数据,支持跨地域的数据访问,涉及到分布式事务...

    数据库原理与应用文档PPT--周慧

    2. **数据模型**:讲解三大基本数据模型——层次模型、网络模型和关系模型,其中关系模型是最常见且广泛使用的,包括关系、元组、属性和键的概念。 3. **关系数据库**:深入解析关系数据库的理论基础,如实体-联系...

    SQL Server 2008数据库设计与实现

    《SQL Server 2008数据库设计与实现》是关系型数据库设计与开发方面的一本经典著作,由资深数据库专家撰写,旨在向读者介绍世界上最受欢迎的数据库管理系统之一——SQL Server 2008。全书分为三个部分,从基础概念到...

    数据库性能调优原理与技术

    本书特别关注了三大主流数据库产品——DB2、Oracle和SQL Server,通过丰富的实证案例,展示了如何有效地进行数据库性能调优。 首先,书中详细阐述了数据库性能的基础理论。这包括数据存储和检索的原理,如B树索引、...

    《Oracle课程设计案例精编》-赵京-源代码

    此外,性能优化也是重点,包括分析SQL执行计划、使用索引优化查询、调整表分区和利用绑定变量等技巧,以提升系统的运行效率。 最后,书中案例将涵盖实际业务场景,如订单管理、库存控制、客户关系管理等,使读者...

Global site tag (gtag.js) - Google Analytics