数据库系统性能调优 索引优化.docx
- 文档编号:25707567
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:9
- 大小:92.28KB
数据库系统性能调优 索引优化.docx
《数据库系统性能调优 索引优化.docx》由会员分享,可在线阅读,更多相关《数据库系统性能调优 索引优化.docx(9页珍藏版)》请在冰豆网上搜索。
数据库系统性能调优索引优化
实验三索引优化
一、在oracle中创建索引
1.创建用户、创建表空间、创建表
两张表:
index_demo1,index_demo2
表的结构:
person_id,gender,state
创建表空间:
创建用户:
创建两张表:
2.有无索引的数据插入效率对比
(1)有索引的数据插入效率
●在index_demo1的person_id创建索引;
●向index_demo1模拟插入100万行记录;
●记下数据插入的执行时间
(2)无索引的数据插入效率
●不建任何索引,直接向index_demo2模拟插入100万行记录;
DECLARE
gindex_demo2.gender%TYPE:
='F';
BEGIN
FORiIN1..1000000
LOOP
INSERTINTOindex_demo2
(person_id,gender,state)
VALUES
(i,g,'WA');
IFg='F'THEN
g:
='M';
ELSE
g:
='F';
ENDIF;
ENDLOOP;
COMMIT;
UPDATEindex_demo2
SETstate='OR'
WHEREperson_idLIKE'%1';
WHEREperson_idLIKE'%7';
UPDATEindex_demo2
SETstate='NC'
WHEREperson_idLIKE'%8';
UPDATEindex_demo2
SETstate='MI'
WHEREperson_idlike'%9';
COMMIT;
END;
/
UPDATEindex_demo2
SETstate='CA'
WHEREperson_idLIKE'%2';
UPDATEindex_demo2
SETstate='ID'
WHEREperson_idLIKE'%3';
UPDATEindex_demo2
SETstate='NY'
WHEREperson_idLIKE'%4';
UPDATEindex_demo2
SETstate='MA'
WHEREperson_idLIKE'%5';
UPDATEindex_demo2
SETstate='MN'
WHEREperson_idLIKE'%6';
UPDATEindex_demo2
SETstate='VA'
●记下数据插入的执行时间
对比两者的执行时间,并说明原因。
显然,建完索引之后再插入数据的速度要慢很多,分析原因,由于每次插入都需要修改索引信息,所以速度会比没有索引的慢许多。
3.索引是否起作用
(1)setautotraceon
(2)settimingon
(3)针对index_demo1表,设计若干个查询(where条件)查看它们的执行计划及执行时间;
Select*fromindex_demo1wheregender=’M’andperson_id<5000;
4.组合索引的创建与作用
●针对index_demo2表,创建person_id和gender的多列组合索引;
●设计若干查询(列出现的顺序),查看它们的执行计划和执行时间。
Select*fromindex_demo1wheregender=’M’andperson_id<5000;
二、oracle索引的维护
1.并行度设置
(1)CREATEINDEXpix_index_demo_gender_state
ONindex_demo1(person_id,state)
PCTFREE0
PARALLEL(DEGREE4);
(2)ALTERINDEXpix_index_demo_gender_state PARALLEL2;
针对index_demo1,分别设计若干查询,查看并行度对查询的执行时间上有何影响?
似乎时间上没有区别
2.压缩
●创建压缩索引
●针对index_demo1,设计若干查询,查看压缩对查询的执行时间上有何影响?
3.重建索引
(1)分析索引的结构
analyzeindexxxxvalidatestructure;
(2)查看INDEX_STATS,从中可以看出索引的层次
(3)Alterindexindex_nametablespacetablespace_namerebuild;
三、sqlserver2012列存储索引
1.表和数据
(1)建立测试表
createtableemp(empnoint,namevarchar(20),depnoint,saldecimal(10,2));
(2)插入2000W条数据
withtas(--用递归CTE(公用表表达式)生成2000万行,注意必须写上列别名
select1empno,'EMP'+CAST(1AsVarchar(20))name,1%5depno,1000*1%10sal
unionall
selectempno+1,'EMP'+CAST(empno+1AsVarchar(20)),empno%5+1,1000*(empno%10)fromtwhereempno<20000000
)
insertintoempselect*fromtOption(Maxrecursion0);--Maxrecursion为0表示不限制递归次数
2.单列索引与多列索引
单列索引:
CREATENONCLUSTEREDCOLUMNSTOREINDEXIX_dep_singleONemp(depno);
多列索引:
CREATENONCLUSTEREDCOLUMNSTOREINDEXIX_dep_multionemp(depno,empno,sal);
所用查询selectavg(cast(depnoasnumeric))fromemp;
查看上述查询的执行时间,并分析原因
3.表中的数据更新对性能的影响
a)单列列存储索引:
CREATENONCLUSTEREDCOLUMNSTOREINDEXIX_emp_depONemp(depno);
b)禁止索引:
ALTERINDEXIX_emp_depONempDISABLE
c)插入100W条数据:
同上个实验
d)启用索引:
ALTERINDEXIX_emp_depONempREBUILD;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库系统性能调优 索引优化 数据库 系统 性能 索引 优化
![提示](https://static.bdocx.com/images/bang_tan.gif)