数据库性能优化1:数据库自优化以提高性能 浏览:739

数据库优化包括数据库的优化、数据库表的优化和程序操作的优化三个部分。本文是第一部分。

优化:添加辅助数据文件,自动设置文件(粗数据分区)
1.1:增加辅助数据文件
从SQLServer2005数据库,默认不生成NDF数据文件,一般一个主数据文件(MDF)是足够的,但一些大型数据库,因为很多信息,和查询频繁,所以为了提高查询速度,可以把记录表或一些参加表分别存储在不同的数据文件
因为CPU和内存的速度远远高于硬盘的读写速度,所以你可以把不同的数据文件在不同的物理硬盘,所以查询的执行时间,可以查询多个硬盘,为了充分利用CPU和内存的性能,提高查询的速度。在这里是一个详细的原理说明,它写道,与数据文件(MDF,NDF)和日志文件(LDF)写法不同:
根据数据文件:SQLServer的所有文件相同的文件组内现有的自由空间的大小,根据新的数据分布到所有的空间数据文件的比例,如果有三个数据文件a.mdf,B.NDF,C.NDF,自由的大小分别为200MB,100MB,和50MB,然后写一70mb东西,他将一个ABC三文件40, 20, 10写数据,如果日志文件已满,不写它
日志文件:日志文件是按顺序编写的,一个是满的,另一个是写的。
从上面可以看出,如果能增加数据文件NDF,有利于大数据量的查询速度,但增加日志文件是无用的。
1.2:设置文件自动增长(大数据量,不需设置少量数据)
在SQLServer2005,初始默认的MDF文件大小5MB,增量1MB,无限生长,LDF初始1MB,10%的增长,达到一定的限制文件数量,一般的设计,设计可以使用SQL,但是设计的大型数据库,最好亲自其生长和初始设计的大小,如果初始值太小,则数据库将很快填补,填补在插入的话,会发生什么当数据文件是完整的和做一些操作,SQLServer将等待操作直到文件自动增长,和原来的操作可以继续。如果自我成长需要很长的时间,原来的操作将取消超时太晚(一般默认值为15秒)。不仅将操作回滚,但文件的自动增长也将被取消。也就是说,这一次的文件没有得到根据尺寸确定的增长自动生长时间的增加,如果太小,可能的增长可以满足运行多次的需要,如果它太大了,你需要等待很长的时间,所以设置的情况要注意以下几点:
1)应设置一个固定的大小,但不均衡。这样可以避免过多或过少的增长不必要的麻烦,建议设置一个增长50Mb空间曾经为一个比较小的数据库,大型数据库,集100MB到200MB一旦生长。
2)定期监视每个数据文件的使用,以确保每个文档的剩余空间是大的或预期的。
3)设置文件最大限度防止SQL Server文件增加生长影响操作系统的磁盘空间。
4)增长后,新的数据文件空间分配应及时检查,避免SQLServer总是写数据的个人档案。
因此,对于一个繁忙的数据库,推荐的设置是打开数据库自动增长选项,以防止数据库故障由于数据库空间的耗尽而应用,但严格避免自动增长的发生,同时尽量不要使用自动收缩功能。
1.3个数据和日志文件分别存储在不同的磁盘上。
数据文件和日志文件的操作会产生大量的我/ o.under可能的条件下,日志文件应该存放在硬盘上的,不同的数据和索引的数据文件,从而驱散我 / O,同时,有利于对数据库的灾难恢复。
优化:表分区、索引分区(优化1粗糙表分区、优化2到精确数据分区)
为什么桌子要被分割
当一个表中的数据量太大时,我们想做的最重要的事情是什么表分为两个或两个以上的点,但表仍然是表,只是为了存储它的内容,以便读取速度是n倍。
原理:表数据不能放在文件中,但是文件组可以放在文件中。表可以放在文件组中,因此表数据可以间接存储在不同的文件中。可以存储在分区中:表、索引和大对象数据。
SQLServer2005,介绍了分区表的概念,当表中数据的增加、查询速度慢、性能下降的应用,那么你应该考虑分区表,当大量的数据,可以在分裂成多个,因为要扫描的数据变少了,查询可以跑得更快,所以操作性能大大提高,表分区、逻辑表仍然是一个完整的清单,只有表中数据的物理存储在多个表空间(物理文件),所以查询数据,并不是每一个可以扫描整个表
2.1何时使用分区表:
1,表的大小超过2GB。
2。该表包含历史数据,新数据将添加到新分区中。
2.2个表分区的优点和缺点
表分区具有以下优点:
1,提高查询性能:分区对象的查询只能搜索您关心的分区,提高检索速度。
2。增强的可用性:如果表的分区失败,其他分区中的表的数据仍然可用;
3,维护方便:如果表的分区有故障,则需要修复数据,只需修复分区。
4,平衡I/O:可以将不同分区映射到磁盘,以平衡I/O,并提高整个系统的性能。
缺点:
分区表关联:现有表没有一种方法可以直接转换为分区表,但Oracle提供联机重新定义表的功能。
2.3个表分区的操作是三个步骤。
2.31创建分区函数
createpartitionfunctionxx1(int)
(1000020000)asrangeleftforvalues;
注意:创建分区函数:myrangepf2,int型的分区,间隔三,10000,1w-2w B,和2W以上C.
2.3.2创建分区架构
createpartitionschememyrangeps2
aspartitionxx1
到(a,b,c);
注意:创建分区函数的分区结构:1 myrangeps2,间隔三A,B,和C,分别
A,B,C是三个文件组的名称,三个NDF必须附加到三个组,并且文件组在创建后不能修改。
2.3.3分区表
公共数据规范——数据空间类型被修改为分区方案,然后选择分区方案名称和分区列列表。结果如图所示。
它也可以用SQL语句生成。
createtable { } { }(avcache dbo。
{ } { } avnote varchar(300)空,
{ { }身份(1,1)
在myrangeps2){ }(BB);注意,这里使用的是myrangeps2 } {架构,基于BB分区
2.3.4查询表分区
SELECT *,$分区。{ myrangepf2 }(BB)fromdbo.avcache


这清楚地说明了表数据是如何分区的。
2.3.5创建索引分区

优化3:分布式数据库设计
分布式数据库系统是在集中式数据库系统的基础上发展起来的,它非常简单,是将整个数据库分开,分布到各个地方,分布式数据库系统的本质分为两类:1。数据在逻辑上统一,物理上分散,分布式数据库是逻辑的统一体,物理上分别存储在不同的物理节点上,分布式数据库通常称为2。逻辑是分布式的,物理分布是,这是联邦分布式数据库,因为每个子联邦数据库系统。相对来说是自主的,这个系统可以容纳各种不同的用途,不同的数据库集成,更适合广泛的数据库。
分布式数据库是比较复杂的,这并不需要详细的,就比如现在的分布式多用户分区数据库系统的强大,如果一个国家的连锁店,每个店一般设计有自己的销售和库存信息,总部需要工人、供应商、存储信息,这种类型的数据库,数据库存储可以完全一致,许多系统也可能导致不一致,使各连锁店本地数据,从而提高速度的影响,减少沟通成本,在不同的场馆和数据分布,并有多个副本,即使个别站点故障,导致整个系统的瘫痪但是他也带来了很多问题例如:数据一致性问题、远程数据传输问题、通信开销降低等问题,使得分布式数据库系统的开发变得更加复杂,只是为了让大家了解原理,具体的用途没有做详细的介绍。
优化:整理数据库片段
如果你的表创建索引,但表现依然不好,很容易产生索引碎片,你需要整理的指标。
索引片段是什么
由于表上有过度的插入、修改和删除操作,索引页被划分成块,并形成索引片段。如果索引片段严重,扫描索引时间会变长,甚至索引不可用,那么数据检索操作就会慢下来。
如何知道索引片段是否已经发生
在SQLServer数据库,索引碎片是由dbccshowcontig或DBCCShowContig检查(表名),它能引导我们整理定期。
通过分析扫描密度(Guo Di)和扫描片段(太高)的结果,确定是否需要进行索引重建。以下两项如下:
scandensity { bestcount:actualcount } {扫描密度最佳值:实际值}:dbccshowcontig返回的最有用的一个百分比,这是最有价值的扩展盘区的实际价值的比例。比例应尽可能接近100%。下一个指示有外部碎片。
logicalscanfragmentation -逻辑扫描碎片:无序的页面的比例。比例应在0%和10%之间,和高度表明有外部碎片。
解决方案:
一是利用dbccindexdefrag组织索引碎片
二是用dbccdbreindex重建索引。
两次打电话给微软的区别如下:
的dbccindexdefrag命令在线操作,所以指数只有当命令运行时,它可以中断操作没有完成的工作。这种方法的缺点是,去除或重新创建操作是有效的没有聚集索引在数据重组。
聚集索引的再创作将重新组织数据,其结果是填充数据页,可以配置使用FILLFACTOR选项的填充度。这种方法的缺点是,该指数是去除/再创造周期中离线,和操作是一个原子的水平。如果中断创建索引,索引不会被重新创造出来的。也就是说,为了获得好的结果,或者用重建索引,你决定重建索引。
推荐文章1
广告