分区、分表、分库的详细理解
一、什么是分区、分表、分库
分区
就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的
分表
就是把一张表按一定的规则分解成N个具有独立存储空间的实体表。系统读写时需要根据定义好的规则得到对应的字表明,然后 *** 作它。
分库
一旦分表,一个库中的表会越来越多
将整个数据库比作图书馆,一张表就是一本书。当要在一本书中查找某项内容时,如果不分章节,查找的效率将会下降。而同理,在数据库中就是分区。
二、常用的单机数据库的瓶颈
问题描述
单个表数据量越大,读写锁,插入 *** 作重新建立索引效率越低。
单个库数据量太大(一个数据库数据量到就是极限)
单个数据库服务器压力过大
读写速度遇到瓶颈(并发量几百)
三、分区
什么时候考虑使用分区?
一张表的查询速度已经慢到影响使用的时候。
sql经过优化
数据量大
表中的数据是分段的
对数据的 *** 作往往只涉及一部分数据,而不是所有的数据
分区解决的问题
主要可以提升查询效率
分区的实现方式(简单)
mysql5 开始支持分区功能
四、分表
什么时候考虑分表?
一张表的查询速度已经慢到影响使用的时候。
sql经过优化
数据量大
当频繁插入或者联合查询时,速度变慢
分表解决的问题
分表后,单表的并发能力提高了,磁盘I/O性能也提高了,写 *** 作效率提高了
查询一次的时间短了
数据分布在不同的文件,磁盘I/O性能提高
读写锁影响的数据量变小
插入数据库需要重新建立索引的数据减少
分表的实现方式(复杂)
需要业务系统配合迁移升级,工作量较大
分区和分表的区别与联系
分区和分表的目的都是减少数据库的负担,提高表的增删改查效率。
分区只是一张表中的数据的存储位置发生改变,分表是将一张表分成多张表。
当访问量大,且表数据比较大时,两种方式可以互相配合使用。
当访问量不大,但表数据比较多时,可以只进行分区。
常见分区分表的规则策略(类似)
Range(范围)
Hash(哈希)
按照时间拆分
Hash之后按照分表个数取模
在认证库中保存数据库配置,就是建立一个DB,这个DB单独保存user_id到DB的映射关系
打开MsSQL2008,找到作业该项,如果打不开或者SQL Server代理是未启动状态,请先在windows服务中启动SQL Server代理(参考),
2
右击MsSQL2008对象资源管理器中的作业,选择新建作业,输入该作业你想用的名称,类别不用管,说明里面是输入一些该作业完成的功能,可不写,请务必勾选已启用复选框
3
点击新建作业窗体左侧的步骤项,点击右侧区域下方的新建按钮,输入步骤名称,类型请选择Transact-SQL脚本(T-SQL),运行身份默认,数据库请选择要进行分区的数据库,请不要选择master默认的
数据库分区是每种数据库都需具备的关键功能之一 几乎所有的Oracle数据库都使用分区功能来提高查询的性能 Oracle g分区功能可以简化数据库的日常管理维护工作 大大减轻了DBA(数据库设计和管理工程师)的工作负担
Oracle g中提供的新功能增添了更多的数据库分区功能选择 使分区功能在使用和维护上变得更加灵活;同时 Oracle g也提供更多的分区功能选择
Oracle 版最早推出了表格的分区功能 使Oracle成为了第一个支持物理分区的RDBMS供应商 SQLServer( )和DB 都只支持逻辑分区(使用UNION ALL视图) 而SQL Server 并不直接支持物理分区(需通过分区功能) Oracle的分区功能选择很受用户群的欢迎 因为分区功能能够改善应用程序的性能 可管理性和可用性 其中最重要的是DSS应用程序 由于该功能受到广泛的喜爱 因此每次发布新版本都会有功能上的不断提高
下面的表格列举了随版本更新而不断提高的分区功能(高级)
分区功能类型
现在让我们简单的讨论一下以上每个分区功能的特性
范围分区 数据根据分区键值范围指定进行分布 比如 如果我们选择一个日期列作为分区键 分区 JAN 就会包括所有包含从 JAN 到 JAN 之间的分区键值(假设分区的范围是从这个月的第一天到这个月的最后一天)
散列分区 将散列算法用于分区键来确定指定行所在的分区 这个分区方法能够保持I/O平衡 但是不可用于范围查询或不等式查询
列表分区 数据根据分区键值列表指定进行分布 这个分区方法对于离散的列表非常有用 如地区 国家等
组合分区 结合 个数据分区方法可以成为一个组合分区方法 先用第一个数据分布方法对表格进行分区 然后再用第二个数据分区方法对每个分区进行二次分区 组合分区方法有以下组合
组合范围散列分区 组合范围列表分区 组合范围范围分区 组合列表范围分区 组合列表列表分区 组合列表散列分区
G支持对索引组织表(索引和数据一起的表格)进行范围分区 列表分区或散列分区 但是不支持对其进行组合分区
Interval分区 G版本引入的interval分区范围分区的一种增强功能 可实现equi sized范围分区的自动化 创建的分区作为元数据 只有最开始的分区是永久分区 随着数据的增加会分配更多的部分 并自动创建新的分区和本地索引
SQL>CREATETABLESALES_PART
(TIME_ID NUMBER REGION_ID NUMBER
ORDER_ID NUMBER
ORDER_DATE DATE
SALES_QTY NUMBER( )
SALES_AMOUNT NUMBER( )
)
PARTITIONBY RANGE (ORDER_DATE)
INTERVAL (NUMTOYMINTERVAL( month )
(PARTITION p_first VALUES LESS THAN ( JAN );
Numtoyminterval功能把数字转换成 INTERVAL YEAR TO MONTH文字( YEAR or MONTH )
进行Interval分区的表格有传统的范围部分和自动生成的interval部分 进行范围分区的表格可以通过使用ALTER TABLE命令的SETINTERVAL选项扩展成为Interval分区的表格
外键分区 分区方案的引入是以相关表格通过相同的分区策略获得好处作为前提设想的 Detail表格通过PK FK关系从master表格继承相同的分区方案 我们不需要把分区键存储在detail表格中 通过关键词 PARTITION BY REFERENCE detail表格获得master表格的分区方案
虚拟列分区 在之前的Oracle版本里 只有分区键存在与表格中才可以实现对表格的分区功能 而Oracle G的新功能 虚拟列 打破了这一限制 允许通过使用表格中的一列或多列的表述确定分区键 而虚拟列只作为元数据存储
例如 在表格ACCOUNTS中添加一个虚拟列
SQL>CREATE TABLE ACCOUNTS
(acc_no number( ) not null
acc_name varchar ( ) not null
acc_loc varchar ( )
acc_branch number( ) generated always as (to_number(substr(to_char(acc_no) )));
使用虚拟列作为分区键
SQL>CREATE TABLE accounts
(acc_no number( ) not null
acc_name varchar ( ) not null
acc_loc varchar ( )
acc_branch number( ) generated always as (to_number(substr(to_char(acc_no) )))
partition by list (acc_branch);
分区建议器
lishixinzhi/Article/program/Oracle/201311/18976
SQL是一种大型的数据库管理系统。只要就是建立连接数据库的平台。要注意的就是:编写代码的是候不要出错。我们也是学了点SQL就是查询、新建视图(view)、修改(updata)、删除(Delete)、触发器(Trigger) 存储过程(saving process) 小弟也就知道这么多了也就一点点,关键还是要靠自己。视图,触发器,存储过程查询,删除,修改表连接,关联(内,外) 主要的学哈如果是要数据库开发那就比较多了简单的使用这就够了
SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制
DB2是IBM出口的一系列关系型数据库管理系统,分别在不同的 *** 作系统平台上服务。虽然DB2产品是基于UNIX的系统和个人计算机 *** 作系统,在基于UNIX系统和微软在windows系统下的Access方面,DB2追寻了ORACLE的数据库产品。
这款新型数据服务器率先实现了可扩展标记语言(XML)和关系数据间无缝交互,而无需考虑数据的格式、平台或位置。来自8个国家的750多名软件开发人员为“Viper”的问世做出了努力,他们进行了精心设计和调试,力求将其打造成SOA环境下的首选信息引擎 DB2 9取得了十项重大进步,包括已获得专利的“pureXML”技术、突破性的“Venom”存储压缩以及增强的自动化数据管理能力等。
1、新的XML特性:
在无需重新定义XML数据的格式,或将其置于数据库大型对象中的前提下,IBM DB2 9允许用户无缝管理普通关系数据和纯XML数据。此项能力是Viper所独有的,它将有助于客户增加其信息的实用性、速度和多功能性,同时大大降低与现有数据管理技术相关的管理成本。它还将显著降低复杂性,并减少普通开发商创建“同时访问关系数据和XML数据的应用”所花费的时间。
新的XML数据类型,允许客户在分层的表格栏中存储规范的XML文档。
支持SQL语句及SQL/XML函数中的XML数据类型。
支持由万维网联盟(W3C)开发的新XQuery语言。IBM DB2 9允许客户直接调用XQuery语言,调用功能可以从DB2表格与视图中提取XML数据。
支持XML数据的检索功能,提高了针对XML文档的查询效率。
为支持DB2的编程程序语言中的XML提供支持,允许应用整合对XML及关系型数据的访问和存储。
2、新的应用与开发特性:
对应用开发工具和原生XML数据存储新特性的支持,允许应用访问和存储XML及相关数据。
DB2 Developer Workbench是一种综合开发环境,可用于创建、编辑、调试、测试和部署DB2存储流程和用户自定义的功能。客户还可以使用Developer Workbench开发SQL应用,创建、编辑和运行SQL语句与XML查询。
面向JDBC和SQLJ的增强型DB2驱动程序符合JDBC 30规范,它还同时支持SQLJ语句。
SQLJ语句的功能特性与大多数JDBC方法相似。
此外,还包括其它重要特性:支持众多新数据类型、DB2独有的支持到面向z/OS 数据服务器IBM DB2 9版可靠连接的方式、异构组合、连接重用等。除支持Visual Studio 2005以外,还包括对Web服务的支持,对本地XML数据存储的全面支持,以及无需编写代码就可以构建应用及Web站点的能力。增强型DB2 Runtime Client支持64位计算,还可在同一台计算机上与其它DB2产品共存。
3、新增自动数据库管理功能:
适应性、自调式内存分配,通过不断更新配置参数、调整缓冲池大小和动态分配可用的内存资源,帮助用户简化或排除DB2服务器的配置工作。面向z/OS对象的DB2 UDB自动状态检测功能,允许客户通过控制中心的创建和变更对象策略向导,使面向z/OS对象的DB2 UDB实现对象维护策略评估自动化。
自动存储支持,可以自动扩充磁盘和文件系统中数据库的大小,现在可用于多分区数据库。
自动统计数据收集,创建新数据库时会自动启动。
根据DB2数据库系统的环境特点,自动配置prefetchers进程与页清洁器。
面向自动表格与索引重组的新策略选项,为数据库管理员提供更多管理表格与索引重组的功能。
4、性能与可扩展性增强(存储压缩等):
利用数据行压缩技术压缩数据对象的功能,可以帮助客户节省磁盘存储空间,并加快数据访问速度。
统计数据视图,为改进查询功能提供更出色的访问计划。
使用定制的脚本或程序加快数据载入速度。
增强型物化查询表(MQT)可为设计MQT提供更强大地支持,更出色的查询性能和更完善的MQT维护。
更大的记录标识符(RID)允许每个对象拥有更多数据页,系统中每页拥有更多记录,一方面为数据库管理员使用系统和用户的临时表格提供了便利,另一方面也便于执行分类和登录 *** 作。
索引的关键字最多可达64组,大小可以扩充至8 KB。
5、新的安全特性与增强:
使用基于标签的访问控制(LBAC),改进行、列级别的数据访问控制功能。
新安全管理器(SECADM)的授权级别,将若干个与安全性相关的优先权集中到一项优先权名下,提高了对于访问信息资产的控制。
“创建数据库”语句中新增的“限制”选项,增强了对进入数据库的控制。
SETSESSIONUSER优先权加强了对拥有转换会话用户身份权力的人的控制。它允许掌握该项权力的人转换为任何被赋予权利的授权ID。
TRANSFER OWNERSHIP SQL语句,提供了改变数据库对象的归属权的能力。
6、使用表格分区改进大型数据库管理:
表格分区是一种数据组织计划,在该计划中,表格数据根据多个表格列,被划分到多个被称为表格分区或范围的存储对象中。这些存储对象可能存放在不同的表空间或相同的表空间中,或两种情况兼而有之。此项新特性的优势包括:
能够创建非常大的表格。分区表格包含的数据远远超过了普通表格。将表格数据划分到众多存储对象中,有助于显著增加表格尺寸。
更灵活的管理能力。现在,客户可以在个别数据分区中完成管理工作,将消耗时间的维护 *** 作分成一系列小型 *** 作。
更加精确地控制索引位置。客户可以将索引放置在不同的表空间,分别对其进行管理。
快速、轻松地访问数据或转出数据。这一功能在数据仓库环境中尤为有用,客户经常在此环境中移入或移出数据,运行支持决策的查询。
改进的查询功能。通过表格分区分离数据,避免对不相关数据进行扫描,从而改进查询处理的功能。
7、数据恢复增强:
重新启动中断的恢复 *** 作,可以在数据库恢复时节省宝贵的时间,同时简化恢复工作。
支持重定向恢复 *** 作,在现有备份镜像中自动生成脚本。
能够从表空间备份镜像中重新构建数据库。此项功能让DB2的恢复更加灵活和多样化,同时为客户提供更全面的恢复解决方案。
8、自主管理性能增强:
使用适应性、自调内存分配简化了内存管理。自调内存提供动态配置,能对工作负载特性的重大变化做出积极响应。
客户创建数据库时,自动统计数据收集功能会自动启动。凭借自动统计数据收集,IBM DB2 9版自动在后台运行RUNSTATS实用程序,确保收集到正确的统计数据,并进行维护。
面向多分区数据库的自动存储支持。这一功能可以按照需求,自动扩大磁盘和文件系统中数据库的容量。
ALTER TABLE语句增强允许客户无需停止或重新创建表格,就可以改变部分表格的属性。
新的策略选项为数据库管理员提供了新的表格和索引自动重组功能。
可以拷贝数据库计划,创建模块方案。一旦数据库管理员创建了模块方案,他们就可将其作为创建新视图的模板。
新的管理SQL例程和视图提供了基本、易用的可编程界面,便于借助SQL来管理DB2。
动态快速通信管理器(FCM)缓冲和新的配置参数,可通过DB2数据库管理器进行自动调节。
9、安装性能增强:
新的CLI驱动程序(面向ODBC和CLI的IBM DB2驱动程序),客户可以在不安装DB2客户端软件的情况下安装此驱动程序。
更加灵活、有效的产品授权管理
可以在同一台计算机上安装多个DB2版本和修补包。
新的响应文件关键字允许IT员工无需与最终用户交互安装DB2产品。
自动演进 — 从Stinger到Viper
基于第82版推出的增强功能,IBM DB2 9版中新的自动数据管理特性将继续帮助提高数据库管理员的生产效率和效用。
其中一些关键特性包括:
适应性、自调内存分配功能此项新功能通过不断更新配置参数和重新调整缓冲池的大小,简化或排除了DB2服务器的配置工作。一旦启动,该功能可在不同内存消耗点之间,动态分配可用的内存资源。在Windows和AIX *** 作系统中,自调内存功能也可以确定数据库内存总体需求,并会自动调节数据库共享内存。
面向 z/OS对象的DB2 UDB自动状态监测功能 通过控制中心的创建和变更对象策略向导,客户可以实现面向z/OS对象的DB2 UDB对象维护策略评估的自动化,从而可使其按照预定次数和时间间隔运行。对创建了策略警报的对象而言,警报通知会发送至对象维护策略指定的状况警报联系处。
自动存储支持 自动存储可以自动扩大磁盘与文件系统中数据库的容量。它消除了对管理存储器的需求,同时利用了数据库管理存储的性能和灵活性。在IBM DB2 9版中,已经添加了面向多分区数据库的自动存储功能。此外,在创建新数据库时,自动存储会自动启动。
自动统计数据收集 在IBM DB2 9版中,当创建新数据库时,使用RUNSTATS命令的自动统计数据收集功能会自动启动。必要时,DB2服务器会在后台处理中收集数据的统计信息。
DB2优化器(DB2 optimizer)利用这些信息对数据库中的信息最有效地恢复。
prefetchers进程和页清洁器的自动配置 在IBM DB2 9版中,prefetchers进程与页清洁器的数量可由DB2数据库系统根据某些环境特性,如CPU的数量、数据库分区的数量和数据库表空间的并行设置,自动确定。
表格与索引自动重组功能增强 表格与索引重组的新策略选项,为数据库管理员提供了更丰富的表格与索引重组管理功能。
以上就是关于数据库分区和分表的区别全部的内容,包括:数据库分区和分表的区别、请问sqlserver 如何移动分区的ndf文件呢、深入浅出Oracle11g分区功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)