百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

sybase数据库分区介绍(sybase数据库使用教程)

mhr18 2024-10-19 05:59 26 浏览 0 评论

Sybase数据库分区介绍

及测试报告

第1章 目的... 2

第2章 参考... 2

第3章 分区介绍... 2

3.1. 分区解释... 3

3.2. 分区作用... 3

3.3. 分区方式... 3

3.4. 数据库支持... 3

3.5. 分区数据查询原理.. 3

3.6. 分区原则... 4

3.7. 数据存放原则... 4

3.8. 分区详解... 4

3.8.1、 List分区... 4

3.8.2、 Range分区... 5

3.8.3、 哈希分区... 5

3.9. 分区和不分区的比较... 6

第4章 测试用例... 7

4.1. 建立表test和test1. 7

4.2. 准备数据... 7

4.3. 测试方法... 7

4.4. 测试要点... 8

4.5. 测试结果... 8

第1章 目的

为了更好的把unicall系统设计的完美,我对现在的unicall数据库部分提出了自己的建议性修改,并进行了测试,以求能使unicall数据库的响应速度进一步的提高

为了解决不断增长的数据导致的数据容量超出设计的范围,导致查询速度慢,我们需要设计一个规则,让新增的数据按我们的要求存放到指定的设备上面,以利于我们进行数据库的查询和管理。分区就是为了解决以上问题。

第2章 参考

<<Sybase Adaptive Server Enterprise 15数据分区>>

第3章 分区介绍

分区有2个概念

1 数据库分区

2 表分区

由于实际应用中表分区应用的比较多,我们在此只对表分区进行介绍,对于数据库分区不做介绍。

3.1.分区解释

分区是对数据库数据的存放位置按照某种方式进行分段的划分为若干个区,跨文件系统分配单个表的多个部分。实际上,表的不同部分在不同的位置被存储为单独的表。

3.2.分区作用

分区是为了解决不断增长的数据量导致的数据容量超出设计的范围,导致查询速度慢的最佳途径。

在不断增长的数据库中,我们需要设计一个规则,让新增的数据按我们的要求存放到指定的设备上面,以利于我们进行数据库的查询和管理。

l 提高查询速度

l 分离数据,利于维护

3.3.分区方式

当前数据库的分区方式有4种,但有的数据库不一定支持

1 list 分区,即列表分区

2 range 分区, 即范围分区

3 hash 分区,即哈希分区

4 子分区。

还有一个是sybase特有的分区 :顺序分区

3.4. 数据库支持

当前数据库在下列版本上可以支持分区:

1 oracle 10g

2 db2 v9

3 mysql5.1

4 sybase15

其中 oracle10g支持子分区,mysql5.1支持子分区,但还没有完善,实际效果是影响性能,mysql5。2才支持子分区。Sybase15不支持子分区。

Informax暂没有看到支持分区的介绍。

3.5.分区数据查询原理

分区数据查询原则:查询引擎如果知道数据表分区,会根据分区方式和关键值去确定需要查找的分区表,然后在确定的分区表空间内查询数据,而其他的分区则不会执行查询,这样就提高了查询的速度。

3.6.分区原则

l 查询响应时间

l 数据存放

l i/o

3.7.数据存放原则

如果是oracle数据库,可以支持子分区,数据可以按年分区,然后再用其他方式分区,这样的好处是维护方便,可以增加,删除分区方便,对保存数据和维护数据容易。

如果不是oracle数据库,基本不支持子分区,所以就需要按月或天或者时间为关键值来做range分区,做到数据平均分配。

如果做关键值的字段值出现大量的重复的值,我们就要考虑用range分区来分开。这个时候不能用hash分区,否则数据容易向一个分区“倾斜”。

3.8.分区详解

3.8.1、List分区

以数据表的某个列作为分区的根基,如果一条记录的该字段值落在该列表内,该记录就保存到一个表空间上。

以sybase为例

Create table test

Called int not null,

Names varchar(40) not null,

Adr varchar(40) notnull

Partition by list ( name )

(

West values (‘北京’, ‘上海’) on seg1,

East values( ‘广州’, ‘成都’,’深圳’ ) on seg2

)

如果有下面的几条记录

1000 里萨 广州

1001 Job 上海

1002 Tom 北京

1003 Jom 成都

1004 Hom 成都

1005 Jobe 深圳

1006 Hob 上海

1007 刘三 北京

1008 全速 广州

如果把这些记录插入到表test内,我们就可以实现记录1000,1003,1004,1005,1008 保存到seg2表空间内,而记录1001,1002,1006,1007保存到seg1表空间内,如果记录多的话,我们可以多分几个区保存数。

3.8.2、Range分区

Range分区也叫范围分区,数据库管理员可以基于关键列中的数据范围指定数据在各分区上的存储位置.

例如

create table customer

(

ord_date datetime not null,

name varchar(20) not null,

address varchar(40) not null

)

partition by range (ord_date)

(ord_date1 values <= (3/31/05) on segment1,

ord_date2 values <= (6/30/05) on segment2,

ord_date3 values <= (9/30/05) on segment3

ord_date4 values <= (12/31/05) on segment4)

本例是按时间来保存数据,当我们挑选05年9月10号的数据的时候,查询引擎只会到segment3分区去找,其他的分区本次查询不会涉及到。缩短了查询时间。

3.8.3、哈希分区

这种数据分区方式是根据在指定列上利用内部哈希算法计算的结果来决定数据存储到哪一个分区。这里不需要指定列表或数值的范围。如果列键包含唯一数据,或者数据重复度极小,哈希分区将在其所有分区上平衡数据存储。然而,如果有大量重复数值,分区将会“倾斜”,一些分区上的数据可能会比其它分区多。

哈希分区在要为大表建立很多分区,或者关键列中的数据没有排序的情况下尤为有用。它同时还可以配合查询处理引擎使得查询工作更为有效。

例如:

Create table test

(

Lid int not null,

Name1 varchar(50) not null,

Addr varchar(100) not null

)

Partition by hash( lid )

(

Lid1 on seg1

Lid2 on seg2

Lid3 on seg3

)

我们假设有下列记录

9 里萨 广州

10 ob 上海

11 om 北京

12 om 成都

13 om 成都

14 obe 深圳

15 ob 上海

16 三 北京

17 速 广州

18 解 上海

19 思 深圳

如果倒入数据到表内,9,12,15,18 会保存到seg1分区上面,10,13,16,19会保存到seg2分区上面, 而11, 14,17会保存到第三个分区上面。

3.9 分区和不分区的比较

我们拿hash分区的来做分析

如果我们要查询lid=17的记录来,如果不分区,lid为索引,查询引擎需要作9次比较才能得到记录。

如果我们分了3个分区,如果查询lid=17的,查询引擎根据表建立的语句知道分区方法,然后根据关键域值lid为17/3=2,只是说数据在seg3上面,在seg3上面查询lid=17的比较次数为最大3次,这样数据库查询引擎只用3次就能找到lid=17的记录。i/o和cpu利用率也大大地降低。

3.10分区查询图例

我们拿hash分区来做个图例:

输入查询条件lid=17

分区1

分区2

分区3

数据查询范围

表分区类型

第4章 测试用例

4.1.建立表test和test1

Create table test

(

Lid int not null,

Name1 varchar(50) not null,

Addr varchar(100) not null

)

Partition by hash( lid )

(

Lid1

Lid2 on test2

)

Create table test1

(

Lid int not null,

Name1 varchar(50) not null,

Addr varchar(100) not null

)on userspace1

4.2 准备数据

1 gsh Beijing

2 ccc beijing

3 bb beijing

4 。。。。。。。。。。

5

共有100万条记录。

分别倒入test和test1表内

4.3 测试方法

我们随意抽取一条记录,利用查询引擎挑选数据的响应时间来评判分区的利弊。

我们用select * from test where lid = 84000 的响应时间来测试。

4.4.测试要点

对相同条件下分区和不分区,重复次数,分区个数进行分别的测试。

针对数据落在一个分区内。

4.5 测试结果

数据量 50万条(不重复数据) 100万条(2次重复) 100万条(10次重复)

分区 不分区 2个分区 不分区 2个分区 不分区 10个分区

Select 0.094 0.032 0.172 0.063 0.157 0.015

Insert 0.016 0.016 0.016 0.016 0.016 0.016

Update 0.094 0.032 0.172 0.063 0.156 0.015

4.6 测试结论

l 执行查询、更新等sql命令,第一次运行查询、更新的速度要慢一点,但之后会有速度优化;

l 分区对sql语句的执行,优化方面似乎更多,因此多次运行后的语句在分区表上执行效率更高;

l 第一次运行sql时,未分区表比已分区表要快。

第5章 附录

5.1 Mysql5.1测试结果

数据量 50万条(随机数据)

分区 不分区 50个分区

Select 0.66 0.01

Insert 0.5 0.01

Update 1.79 0.01

5.2.Oracle10g测试结果

数据量 30万条(随机数据)

分区 不分区 12个分区

Select 1.75 0.08

相关推荐

【预警通报】关于WebLogic存在远程代码执行高危漏洞的预警通报

近日,Oracle官方发布了2021年1月关键补丁更新公告CPU(CriticalPatchUpdate),共修复了包括CVE-2021-2109(WeblogicServer远程代码执行漏洞)...

医院信息系统突发应急演练记录(医院信息化应急演练)

信息系统突发事件应急预案演练记录演练内容信息系统突发事件应急预案演练参与人员信息科参与科室:全院各部门日期xxxx-xx-xx时间20:00至24:00地点信息科记录:xxx1、...

一文掌握怎么利用Shell+Python实现完美版的多数据源备份程序

简介:在当今数字化时代,无论是企业还是个人,数据的安全性和业务的连续性都是至关重要的。数据一旦丢失,可能会造成无法估量的损失。因此,如何有效地对分布在不同位置的数据进行备份,尤其是异地备份,成为了一个...

docker搭建系统环境(docker搭建centos)

Docker安装(CentOS7)1.卸载旧版Docker#检查已安装版本yumlistinstalled|grepdocker#卸载旧版本yumremove-ydocker.x...

基础篇:数据库 SQL 入门教程(sql数据库入门书籍推荐)

SQL介绍什么是SQLSQL指结构化查询语言,是用于访问和处理数据库的标准的计算机语言。它使我们有能力访问数据库,可与多种数据库程序协同工作,如MSAccess、DB2、Informix、M...

Java21杀手级新特性!3行代码性能翻倍

导语某券商系统用这招,交易延迟从12ms降到0.8ms!本文揭秘Oracle官方未公开的Record模式匹配+虚拟线程深度优化+向量API神操作,代码量直降70%!一、Record模式匹配(代码量↓8...

一文读懂JDK21的虚拟线程(java虚拟线程)

概述JDK21已于2023年9月19日发布,作为Oracle标准Java实现的一个LTS版本发布,发布了15想新特性,其中虚拟线程呼声较高。虚拟线程是JDK21中引入的一项重要特性,它是一种轻量级的...

效率!MacOS下超级好用的Linux虚拟工具:Lima

对于MacOS用户来说,搭建Linux虚拟环境一直是件让人头疼的事。无论是VirtualBox还是商业的VMware,都显得过于笨重且配置复杂。今天,我们要介绍一个轻巧方便的纯命令行Linux虚拟工具...

所谓SaaS(所谓三维目标一般都应包括)

2010年前后,一个科技媒体的主编写一些关于云计算的概念性问题,就可以作为头版头条了。那时候的云计算,更多的还停留在一些概念性的问题上。而基于云计算而生的SaaS更是“养在深闺人未识”,一度成为被IT...

ORA-00600 「25027」 「x」报错(报错0xc0000001)

问题现象:在用到LOB大对象的业务中,进行数据的插入,失败了,在报警文件中报错:ORA-00600:内部错误代码,参数:[25027],[10],[0],[],[],[],[],[...

安卓7源码编译(安卓源码编译环境lunch失败,uname命令找不到)

前面已经下载好源码了,接下来是下载手机对应的二进制驱动执行编译源码命令下载厂商驱动https://developers.google.com/android/drivers?hl=zh-cn搜索NGI...

编译安卓源码(编译安卓源码 电脑配置)

前面已经下载好源码了,接下来是下载手机对应的二进制驱动执行编译源码命令下载厂商驱动https://developers.google.com/android/drivers?hl=zh-cn搜索NGI...

360 Vulcan Team首战告捷 以17.5万美金强势领跑2019“天府杯“

2019年11月16日,由360集团、百度、腾讯、阿里巴巴、清华大学与中科院等多家企业和研究机构在成都联合主办了2019“天府杯”国际网络安全大赛暨2019天府国际网络安全高峰论坛。而开幕当日最激荡人...

Syslog 日志分析与异常检测技巧(syslog发送日志配置)

系统日志包含有助于分析网络设备整体运行状况的重要信息。然而,理解并从中提取有效数据往往颇具挑战。本文将详解从基础命令行工具到专业日志管理软件的全流程分析技巧,助你高效挖掘Syslog日志价值。Gr...

从Oracle演进看数据库技术的发展(从oracle演进看数据库技术的发展的过程)

数据库技术发展本质上是应用需求驱动与基础架构演进的双向奔赴,如何分析其技术发展的脉络和方向?考虑到oracle数据库仍然是这个领域的王者,以其为例,管中窥豹,对其从Oracle8i到23ai版本的核...

取消回复欢迎 发表评论: