SQL Server 2005对海量数据的处理
- 格式:doc
- 大小:25.00 KB
- 文档页数:3
SQLServer处理亿万级别的数据的优化措施序⾔Sql Server数据库之通过SqlBulkCopy快速插⼊⼤量数据///<summary>///海量数据插⼊⽅法///</summary>///<param name="connectionString">⽬标连接字符</param>///<param name="TableName">⽬标表</param>///<param name="dt">源数据</param>private void SqlBulkCopyByDatatable(string connectionString, string TableName, DataTable dt){using (SqlConnection conn = new SqlConnection(connectionString)){using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, eInternalTransaction)){try{sqlbulkcopy.DestinationTableName = TableName;//⼀次批量的插⼊的数据量sqlbulkcopy.BatchSize = 1000;//超时之前操作完成所允许的秒数,如果超时则事务不会提交,数据将回滚,所有已复制的⾏都会从⽬标表中移除sqlbulkcopy.BulkCopyTimeout = 60;//设定NotifyAfter 属性,以便在每插⼊10000 条数据时,呼叫相应事件。
sqlbulkcopy.NotifyAfter = 10000;for (int i = 0; i < dt.Columns.Count; i++){sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);}sqlbulkcopy.WriteToServer(dt);}catch (System.Exception ex){throw ex;}}}}View Code如何在SQLServer中处理亿万级别的数据(历史数据),可以按以下⽅⾯进⾏:去掉表的所有索引⽤SqlBulkCopy进⾏插⼊分表或者分区,减少每个表的数据总量在某个表完全写完之后再建⽴索引正确的指定索引字段把需要⽤到的字段放到包含索引中(在返回的索引中就包含了⼀切)查询的时候只返回所需的字段资料。
SQL SERVER 2005利用分区对大数据表处理操作手册超大型数据库的大小常常达到数百GB,有时甚至要用TB来计算。
而单表的数据量往往会达到上亿的记录,并且记录数会随着时间而增长。
这不但影响着数据库的运行效率,也增大数据库的维护难度。
除了表的数据量外,对表不同的访问模式也可能会影响性能和可用性。
这些问题都可以通过对大表进行合理分区得到很大的改善。
当表和索引变得非常大时,分区可以将数据分为更小、更容易管理的部分来提高系统的运行效率。
如果系统有多个CPU或是多个磁盘子系统,可以通过并行操作获得更好的性能。
所以对大表进行分区是处理海量数据的一种十分高效的方法。
本文通过一个具体实例,介绍如何创建和修改分区表,以及如何查看分区表。
SQL Server 2005是微软在推出SQL Server 2000后时隔五年推出的一个数据库平台,它的数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使用户可以构建和管理用于业务的高可用和高性能的数据应用程序。
此外SQL Server 2005结合了分析、报表、集成和通知功能。
这使企业可以构建和部署经济有效的BI解决方案,帮助团队通过记分卡、Dashboard、Web Services 和移动设备将数据应用推向业务的各个领域。
无论是开发人员、数据库管理员、信息工作者还是决策者,SQL Server 2005都可以提供出创新的解决方案,并可从数据中获得更多的益处。
它所带来的新特性,如T-SQL的增强、数据分区、服务代理和与.NetFramework的集成等,在易管理性、可用性、可伸缩性和安全性等方面都有很大的增强。
表分区的具体实现方法:表分区分为水平分区和垂直分区。
水平分区将表分为多个表。
每个表包含的列数相同,但是行更少。
例如,可以将一个包含十亿行的表水平分区成12个表,每个小表表示特定年份内一个月的数据。
任何需要特定月份数据的查询只需引用相应月份的表。
而垂直分区则是将原始表分成多个只包含较少列的表。
情境12、SQL Server 2005 的数据管理一、目的1、理解管理数据库系统的安全性管理。
2、掌握数据库的备份与恢复二、工作任务数据库备份与还原1 、创建备份设备(1)启动 SSMS,在对象资源管理器窗口里展开树型目录,在“数据库实例”下选择“服务器对象”右单击。
(2)在“服务器对象”的快捷菜单中选择“新建”->“备份设备”。
(3)在“设备名称”文本框里输入备份设备的名称,在“文件”文本框里输入备份设备的路径和文件名。
(4)设置完毕后,单击“确定”按钮完成创建备份设备操作。
2、备份操作(1)启动SSMS,在“对象资源管理器”窗口里展开树型目录,选择“数据库实例”->“数据库”,选中“StudentDB”(“学生成绩管理系统”数据库)右单击。
(2)在弹出的快捷菜单里选择“任务”->“备份”。
(3)选择要备份的数据库、备份的类型及备份的目标等。
(4)单击“备份数据库”对话框中“选择页”->“选项”,进行相关设置。
3、还原操作(1)启动SSMS,在“对象资源管理器”窗口里展开树型目录,选择“数据库实例”->“数据库”,选中“StudentDB”(“学生成绩管理系统”数据库)右单击。
(2)在弹出的快捷菜单里选择“任务”->“还原”->“数据库”,将弹出“还原数据库”对话框。
(3)在“还原数据库”对话框里有很多选择项,不同的还原情况选择不同的选择项:目标数据库在该下拉列表框里可以选择要还原的数据库。
目标时间点只要有事务日志备份支持,可以还原到某个时间的数据库状态。
在默认情况下该项为“最近状态”。
还原的源在该区域里可以指定用于还原的备份集的源和位置。
(4)如有需要,还可以在“还原数据库选项”对话框里做如下设置:覆盖现有数据库保留复制设置还原每个备份之前进行提示限制访问还原的数据库将数据库文件还原为恢复状态(5)设置完毕后,单击“确定”按钮完成还原操作。
数据的导入与导出1、导入数据(以Excel 2003为例)(1)启动 SSMS,右击“对象资源管理器”->“StudentDB”数据库。
SQLServer优化资料整理SQLServer优化资料整理50种方法优化SQL Server数据库查询(有N多错别字)查询速度慢的原因很多,常见如下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足5、网络速度慢6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
9、返回了不必要的行和列10、查询语句不好,没有优化可以通过如下方法来优化查询:1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempd b应放在RAID0上,SQL2000不在支持。
数据量(尺寸)越大,提高I/O越重要.2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)3、升级硬件4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。
注意填充因子要适当(最好是使用默认值0)。
索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段5、提高网速;6、扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。
配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。
运行Microsoft SQL Server? 2000 时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的1.5 倍。
如果另外安装了全文检索功能,并打算运行Microsoft 搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的3 倍。
将SQL Server max server memory 服务器配置选项配置为物理内存的1.5 倍(虚拟内存大小设置的一半)。
1、SQL Server是⼀种数据库管理系统(DBMS),其数据模型是以关系型为主,辅助以⼀些⾯向对象模型。
2、SQL Server(以及类似Oracle之类的⼤型的DBMS)其应⽤主要有两种:
1)OLTP(联机事务处理):主要是对数据进⾏添加、修改、删除、查询操作。
传统的“进销存系统”、“信息管理系统”等均属于OLTP
2)OLAP(联机分析处理):主要是基于海量数据的查询、分析。
数据仓库技术就属于OLAP。
3、SQL Server 2005组件:
4、SQL Server版本:
企业版、标准版:⽤于企业部署,必须安装到服务器级操作系统上,如Windows Server 2003或Windows Server 2008。
开发⼈员版:功能与企业版的功能相同,⽤于开发⼈员在开发中对数据库进⾏设计、调试等。
可部署在Windows XP、Windows Vista等⼯作站操作系统上。
Express:免费的,功能最少,但对于普通的数据库开发已经⾜够。
另外在微软的官⽅站上有SQL Server Management Studio Express可下载,⽤来进⾏对数据库的图形化控制操作。
Express的Advanced版本集成了Express、Management Studio Express和Reporting Service,也可以直接在微软的官⽅站下载。
SQL Server 2005对海量数据的处理超大型数据库的大小常常达到数百GB,有时甚至要用TB来计算。
而单表的数据量往往会达到上亿的记录,并且记录数会随着时间而增长。
这不但影响着数据库的运行效率,也增大数据库的维护难度。
除了表的数据量外,对表不同的访问模式也可能会影响性能和可用性。
这些问题都可以通过对大表进行合理分区得到很大的改善。
当表和索引变得非常大时,分区可以将数据分为更小、更容易管理的部分来提高系统的运行效率。
如果系统有多个CPU或是多个磁盘子系统,可以通过并行操作获得更好的性能。
所以对大表进行分区是处理海量数据的一种十分高效的方法。
本文通过一个具体实例,介绍如何创建和修改分区表,以及如何查看分区表。
1、SQL Server 2005
SQL Server 2005是微软在推出SQL Server 2000后时隔五年推出的一个数据库平台,它的数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使用户可以构建和管理用于业务的高可用和高性能的数据应用程序。
此外,SQL Server 2005结合了分析、报表、集成和通知功能。
这使得企业可以构建和部署经济有效的BI解决方案,帮助团队通过记分卡、Dashboard、Web Services和移动设备将数据应用推向业务的各个领域。
无论是开发人员、数据库管理员、信息工作者还是决策者,SQL Server 2005都可以提供出创新的解决方案,并可从数据中获得更多的益处。
它所带来的新特性,如T-SQL的增强、数据分区、服务代理和与.Net Framework的集成等,在易管理性、可用性、可伸缩性和安全性等方面都有很大的增强。
2、表分区的具体实现方法
表分区分为水平分区和垂直分区。
水平分区将表分为多个表。
每个表包含的列数相同,但是行更少。
例如,可以将一个包含十亿行的表水平分区成12 个表,每个小表表示特定年份内一个月的数据。
任何需要特定月份数据的查询只需引用相应月份的表。
而垂直分区则是将原始表分成多个只包含较少列的表。
水平分区是最常用分区方式,本文以水平分区来介绍具体实现方法。
水平分区常用的方法是根据时期和使用对数据进行水平分区。
例如本文例子,一个短信发送记录表包含最近一年的数据,但是只定期访问本季度的数据。
在这种情况下,可考虑将数据分成四个区,每个区只包含一个季度的数据。
2.1、创建文件组
建立分区表先要创建文件组,而创建多个文件组主要是为了获得好的I/O 平衡。
一般情况下,文件组数最好与分区数相同,并且这些文件组通常位于不同的磁盘上。
每个文件组可以由一个或多个文件构成,而每个分区必须映射到一个文件组。
一个文件组可以由多个分区使用。
为了更好地管理数据(例如,为了获得更精确的备份控制),对分区表应进行设计,以便只有相关数据或逻辑分组的数据位于同一个文件组中。
使用ALTER DATABASE,添加逻辑文件组名:
ALTER DATABASE [DeanDB] ADD FILEGROUP [FG1]
DeanDB为数据库名称,FG1文件组名。
创建文件组后,再使用ALTER DATABASE 将文件添加到该文件组中:
ALTER DATABASE [DeanDB] ADD FILE ( NAME = N'FG1',
FILENAME = N'C:DeanDataFG1.ndf' , SIZE = 3072KB ,
FILEGROWTH = 1024KB ) TO FILEGROUP [FG1]
类似的建立四个文件和文件组,并把每一个存储数据的文件放在不同的磁盘驱动器里。
2.2、创建分区函数
创建分区表必须先确定分区的功能机制,表进行分区的标准是通过分区函数来决定的。
创建数据分区函数有RANGE “LEFT | / RIGHT”两种选择。
代表每个边界值在局部的哪一边。
例如存在四个分区,则定义三个边界点值,并指定每个值是第一个分区的上边界(LEFT) 还是第二个分区的下边界(RIGHT)。
代码如下:
CREATE PARTITION FUNCTION [SendSMSPF](datetime)
AS RANGE RIGHT FOR V ALUES ('20070401', '20070701', '20071001')
2.3、创建分区方案
创建分区函数后,必须将其与分区方案相关联,以便将分区指向至特定的文件组。
就是定义实际存放数据的媒体与各数据块的对应关系。
多个数据表可以共用相同的数据分区函数,一般不共用相同的数据分区方案。
可以通过不同的分区方案,使用相同的分区函数,使不同的数据表有相同的分区条件,但存放在不同的媒介上。
创建分区方案的代码如下:
CREATE PARTITION SCHEME [SendSMSPS] AS PARTITION [SendSMSPF]
TO ([FG1], [FG2], [FG3], [FG4])
2.4、创建分区表
建立好分区函数和分区方案后,就可以创建分区表了。
分区表是通过定义分区键值
和分区方案相联系的。
插入记录时,SQL SERVER会根据分区键值的不同,通过分区函数的定义将数据放到相应的分区。
从而把分区函数、分区方案和分区表三者有机的结合起来。
创建分区表的代码如下:
CREATE TABLE SendSMSLog
([ID] [int] IDENTITY(1,1) NOT NULL,
[IDNum] [nvarchar](50) NULL,
[SendContent] [text] NULL
[SendDate] [datetime] NOT NULL,
) ON SendSMSPS(SendDate)。