资源预览内容
第1页 / 共86页
第2页 / 共86页
第3页 / 共86页
第4页 / 共86页
第5页 / 共86页
第6页 / 共86页
第7页 / 共86页
第8页 / 共86页
第9页 / 共86页
第10页 / 共86页
亲,该文档总共86页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
WORD完美.格式编辑 性能调优1 百胜表规范 USE ERP_DWGO/*功能说明: 创建【区域】维度表修改说明:Create by LY on 2011-09-07*/IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE id = OBJECT_ID(Dim_Area) AND type = U)BEGIN DROP TABLE Dim_AreaENDGOCREATE TABLE dbo.Dim_Area ( AreaCode VARCHAR(20) NOT NULL, AreaName VARCHAR(50) NULL, CONSTRAINT PK_DIM_AREA PRIMARY key (AreaCode);GO/*功能说明: 获取区域表有效的信息修改说明:Create by LY on 2011-09-07*/IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE id = OBJECT_ID(VW_Dim_Area) AND type = V)BEGIN DROP VIEW VW_Dim_AreaENDGOCREATE VIEW VW_Dim_AreaAS SELECT AreaCode FROM Dim_Area LEFT JOIN SYSOBJECTS ON 1=1 LEFT JOIN SYSCOLUMNS ON 1=1 WHERE 1=1 GROUP BY AreaCodeGO/*功能说明:抽取业务库的数据到数据仓库修改说明:Create by LY on 2011-09-07 Modify by LY on 2011-09-07 增加变量的注释*/IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE id = OBJECT_ID(P_GetData_Load_Dim_Area) AND OBJECTPROPERTY(ID, NIsProcedure) = 1)BEGIN DROP PROCEDURE dbo.P_GetData_Load_Dim_AreaENDGOSET ANSI_NULLS ONSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE dbo.P_GetData_Load_Dim_Area P_sourceDB_name NVARCHAR(50)-源数据库名称,数据从哪抽取ASBEGINBEGIN TRAN -开始事务 DECLARE TrunSql VARCHAR(50); -清空数据,不记录日志 DECLARE InsertSql VARCHAR(MAX); -插入数据 SET TrunSql= TRUNCATE Table Dim_Area ;EXEC (TrunSql)IF error0 BEGIN ROLLBACK TRAN RETURN -1 ENDSET InsertSql= INSERT INTO Dim_Area SELECT QUYU.QYDM as AreaCode, QUYU.QYMC as AreaName FROM ERP_Business.QUYU ; EXEC(InsertSql) IF ERROR0 BEGIN ROLLBACK TRAN RETURN -1 ENDCOMMIT TRANEND;GO/*功能说明:抽取业务库的数据到数据仓库修改说明:Create by LY on 2011-09-07 Modify by LY on 2011-09-07 增加变量的注释*/IF OBJECT_ID(dbo.P_GetData_Load_Dim_Area,P) IS NOT NULL DROP PROC dbo.P_GetData_Load_Dim_AreaGOSET ANSI_NULLS ONSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE dbo.P_GetData_Load_Dim_Area P_sourceDB_name NVARCHAR(50)-源数据库名称,数据从哪抽取ASBEGINBEGIN TRAN -开始事务 DECLARE TrunSql VARCHAR(50); -清空数据,不记录日志 DECLARE InsertSql VARCHAR(MAX); -插入数据 SET TrunSql= TRUNCATE Table Dim_Area ;EXEC (TrunSql)IF error0 BEGIN ROLLBACK TRAN RETURN -1 ENDSET InsertSql= INSERT INTO Dim_Area SELECT QUYU.QYDM as AreaCode, QUYU.QYMC as AreaName FROM ERP_Business.QUYU ; EXEC(InsertSql) IF ERROR0 BEGIN ROLLBACK TRAN RETURN -1 ENDCOMMIT TRANEND;2 表分区SQL Server引入的表分区技术,让用户能够把数据分散存放到不同的物理磁盘中,提高这些磁盘的并行处理性能以优化查询性能2.1 表分区的介绍l 表分区的作用,优点,步骤(1)分区表的作用:在大量业务数据处理的项目中,可以考虑使用分区表来提高应用系统的性能并方便数据管理,本文详细介绍了分区表的使 用。在大型的企业应用或企业级的数据库应用中,要处理的数据量通常可以达到几十到几百GB,有的甚至可以到TB级。虽然存储介质和数据处理技术的发展也很快,但是仍然不能满足用户的需求,为了使用户的大量的数据在读写操作和查询中速度更快,Oracle提供了对表和索引进行分区的技术,以改善大型应用系统的性能。(2)使用分区的优点:增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能;改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。(3).分区表的步骤:1.创建分区函数2.创建映射到分区函数的分区方案3.创建使用该分区方案的分区表2.2 表分区的SQL步骤l 创建数据库的时候就创建分区的方案:use Mastergo/*功能说明: 关闭数据库连接修改说明:Create by LY on 2011-09-09*/if object_id(Proc_KillDataBase,P) is not null drop proc Proc_KillDataBasegocreate proc Proc_KillDataBaseDataBaseName nvarchar(100)asbegin DECLARE i INT SELECT i=1 DECLARE sSPID VARCHAR(100) DECLARE KILL_CUR SCROLL CURSOR FOR SELECT SPID FROM sysprocesses WHERE DBID=DB_ID(DataBaseName) OPEN KILL_CUR IF CURSOR_ROWS = 0 GOTO END_KILL_CUR FETCH FIRST FROM KILL_CUR INTO sSPID EXEC( KILL +sSPID) WHILE i CURSOR_ROWS BEGIN FETCH NEXT FROM KILL_CUR INTO sSPID EXEC( KILL +sSPID) SELECT i=i+1 END END_KILL_CUR: CLOSE KILL_CUR DEALLOCATE KILL_CURendgoEXEC Proc_KillDataBase PT_SalesGO/*步骤一:功能说明: 创建Sales数据库,创建多个文件组,用于数据分区修改说明:Create by LY on 2011-09-09*/IF EXISTS (SELECT 1 FROM sys.databases WHERE name = PT_Sales)BEGIN DROP DATABASE PT_SalesENDGOCREATE D
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号