失效链接处理 |
数据库分区及索引 PDF 下载
本站整理下载:
相关截图:
主要内容:
概念:数据库分区是一种物理数据库设计技术 目的:主要目的是为了在特定SQL操作中减少数据读写的总量以缩短响应时间 分类:分为水平分区(Horizontal Paritioning)和垂直分区(Ver俱cal Par俱俱oning) 水平分区:是对表的行进行分区,通过这种方式不同分组里面的物理列分隔的数据集得以组 合,从而进行个体分隔(单分区)或集体分隔(1个或多个分区).所有表中定义的列 在米格 数据集中都能找到,所以表的特性依然得以保持。 例如:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其 中一年的记录。(一定要通过某个属性来进行分割,这里使用的就是年份) 垂直分区:通过对表的垂直划分来减少目标表的宽度,事某些特定的列被划分到特定的分 区, 每个分区都包含了其中的列所对应的行。 例如:一个包含了大text和BLOB列的表,这些text和BLOB列又不经常被访问,这时 候就要把这些不经常使用的text和BLOB划分到另一个分区,在保证他们数据相 关性的 同时还能提高访问速度。 分区优点: 相对于单个文件系统或是硬盘,分区可以存储更多的数据 数据管理比较方便,比如要清理或废弃某年的数据,可以直接删除该日期的分区 数据即可精准定位分区查询数据,不需要全表扫描查询,大大提高数据检索效率 可跨多个分区磁盘查询,来提高查询的吞吐量 在涉及聚合函数查询时,可以很容易进行数据的合并 详解: 分区:就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层 是由N个 物理区块组成的 分表:就是把一张表按一定的规则分解成N个具有独立存储空间的实体表。系统 读写时需要 根据定义好的规则得到对应的字段名,然后操作它 分库:一旦分表,一个库中的表会越来越多,当数据量很大时,影响到使用 时,就需要进行分库操作。 单机数据库的问题: 单个表数据量越大,读写缩,插入操作重新建立索引效率越低 单个库数据量太大(一个数据库数据量到1T‐2T就是极限) 单个数据库服务器压力过大 读写速度遇到瓶颈(并发量几百)
分区使用情景: 一张表的查询速度已经慢到影响使用的时候 sql进过优化 数据量过大 表中的数据是分段的 对数据的操作往往只能涉及一部分数据,而不是所有的数据 分区解决的问题:主要是可以提升查询效率 分区的简单实现方式:MySQL5开始支持分区功能 使用oracle数据库创建表分区,使用的是DBeaver Enterprise工具编写sql代码,具体连接 方式在此就不做阐述了,大家百度下: 创建Range(范围)分区表案例: 1 ‐‐创建分区表 此表尚未创建 2 create table student( 3 s_id number(3) primary key, 4 s_name varchar2(10), 5 s_sex char(2), 6 s_age number(3) 7 ) 8 partition by range(s_age)( 9 partition p1 values less than(20), 10 partition p2 values less than(40), 11 partition p3 values less than(maxvalue) ‐‐分区列中的最大值 12 ) 13 ‐‐向student表中添加数据 14 insert into student values (111,'张三','男',18); 15 insert into student values (222,'赵四','男',16); 16 insert into student values (333,'王五','男',15) 17 insert into student values (444,'李一','男',20) 18 insert into student values (555,'李七','男',32) 19 insert into student values (666,'徐八','男',40) 20 insert into student values (777,'佟九','男',49) 21 ‐‐查询表 22 select * from student; 23 ‐‐查询分区数据 24 select * from student partition(p1); 25 select * from student partition(p2); 26 select * from student partition(p3);
|