- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
I基于数据库性能优化的实验报告
广州中医药大学医学信息工程学院
实 验 报 告
课程名称: 网络数据库编程 专业班级: 计算机科学与技术( 2012 )级 学生姓名: 张鹏燕2012081076 薛丽梅2012081080 杨晓珠2012081018 翁浩彬2012081007 实验名称: 数据库性能优化 实验成绩: 课程类别: □ 限选? 公选□ 其它□ 数据库系统性能优化
(基于MySQL数据库,采用一定的查询优化方案,用MySQL的内部数据说明优化前与优化后CPU的情况)
实验背景
数据库系统是管理信息系统的核心,基于数据库的联机事务处理(OLTP)以及联机分析处理(OLAP)是银行、企业、政府等部门最为重要的计算机应用之一。
从大多数系统的应用实例来看,查询操作在各种数据库操作中所占据的比重最大,而查询操作所基于的SELECT语句在SQL语句中又是代价最大的语句。举例来说,如果数据的量积累到一定的程度,比如一个银行的账户数据库表信息积累到上百万甚至上千万条记录,全表扫描一次往往需要数十分钟,甚至数小时。如果采用比全表扫描更好的查询策略,往往可以使查询时间降为几分钟,由此可见查询优化技术的重要性。
中发现,许多程序员在利用一些前端数据库开发工具(如PowerBuilder、Delphi等)开发数据库应用程序时,只注重用户界面的华丽,并不重视查询语句的效率问题,导致所开发出来的应用系统效率低下,资源浪费严重。因此,如何设计高效合理的查询语句就显得非常重要。许多程序员认为查询优化是DBMS(数据库管理系统)的任务,与程序员所编写的SQL语句关系不大,这是错误的。一个好的查询计划往往可以使程序性能提高数十倍。查询计划是用户所提交的SQL语句的集合,查询规划是经过优化处理之后所产生的语句集合。
本以应用实例为基础,结合数据库理论,介绍查询优化技术在现实系统中的运用DBMS处理查询计划的过程是这样的:在做完查询语句的词法、语法检查之后,将语句提交给DBMS的查询优化器,优化器做完代数优化和存取路径的优化之后,由预编译模块对语句进行处理并生成查询规划,然后在合适的时间提交给系统处理执行,最后将执行结果返回给用户。在实际的数据库产品(如Oracle、Sybase等)的高版本中都是采用基于代价的优化方法,这种优化能根据从系统字典表所得到的信息来估计不同的查询规划的代价,然后选择一个较优的规划。虽然现在的数据库产品在查询优化方面已经做得越来越好,但由用户提交的SQL语句是系统优化的基础,很难设想一个原本糟糕的查询计划经过系统的优化之后会变得高效,因此用户所写语句的优劣至关重要。系统所做查询优化我们暂不讨论,下面重点说明改善用户查询计划的解决方案。
建立country表:
注:
说明:具体为大家解释以下三种方法,说明MySQL查询优化的结果。
建立索引。
MySQL允许对数据库进行索引,以此能迅速查找记录,从而无需一开始就扫描整个表,由此显著的加快查询速度。每个表最多可以做到16个索引,此外MySQL还支持多列索引及全文检索。
例:city表中的 Ottawa 信息:
:SELECT * FROM sakila.city where city = ‘Ottawa’;
:
CPU使用情况:
Io使用情况:
:
:
alter table sakila.city add index(city);
SELECT * FROM sakila.city where city = ‘Ottawa’;
:
CPU使用情况:
Io使用情况:
:
2.尽量不使用通配符*。
尽量不用通配符*来进行查询。由于使用通配符*会取出所有的列,加大了数据库的工作量。所以优化的原则为:需要哪列就取哪列,不要为了方便而加大数据库的压力。
例:查询表country有哪些国家:
:SELECT * FROM sakila.country;
:
CPU使用情况:
Io使用情况:
:
:SELECT country FROM sakila.country;
:
CPU使用情况:
Io使用情况:
优化前后执行时间对比,截图如下:
3.用连接查询替代子查询。
因为子查询会多次遍历表中所有的数据(视你的子查询的层次而定),而连接查询只会遍历一次。
例:中国的所有城市的信息:
:Select * from sakila.city where country_id in(
Select country_id from sakila.country where country =‘China’);
:
CPU使用情况:
Io使用情况:
:
:Select * from sakila.city inner join(
Select c
您可能关注的文档
最近下载
- 江苏开放大学行政伦理学综合大作业.doc
- 政治选择性必修2一民事权利与义务.docx
- 启迪幼儿园防汛安全演练方案.doc VIP
- 学校安全工作台账(最完整版).doc VIP
- 第11课 整理信息资源 教案 义务教育人教版信息科技三年级全一册.pdf
- 4.3.2等比数列的前n项和公式(教案)-高中数学人教A版(2019)选择性必修第二册.docx
- 八上必读名著《昆虫记》《红星照耀中国》复习资料.doc VIP
- CQC1143-2019电力储能系统用电池连接电缆认证技术规范.pdf VIP
- 铁路机车车辆驾驶人员(J6类)考前通关必练题及答案.doc VIP
- 幼儿园小班科学活动《小动物找尾巴》课件.pptx
文档评论(0)