数据库优化探讨

来源 :中国科技博览 | 被引量 : 0次 | 上传用户:wwjms
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘 要]数据库性能的高低直接影响应用程序的性能,因此数据库优化是一项至关重要的工作。本文从数据库设计、SQL优化和硬件资源三个方面探讨了数据库的优化,提高了数据库的执行效率。
  [关键词]数据库优化、数据库性能、SQL优化
  中图分类号:TG333.7 文献标识码:A 文章编号:1009-914X(2015)41-0253-01
  随着信息技术不断发展,信息化应用领域越来越广泛,应用系统越来越多,而大部分的应用数据都要依托数据库系统来管理,优化数据库的性能变得尤为重要。一般来说,要保证数据库的效率,需要做好数据库设计、sql语句优化和硬件资源三个方面的工作。
  一、数据库设计
  1、合理设计冗余
  完全按照规范化设计的系统几乎是不可能的,除非系统特别的小,在规范化设计后,有计划地加入冗余是必要的。冗余可以是冗余数据库、冗余表或者冗余字段,不同粒度的冗余可以起到不同的作用。冗余可以是为了编程方便而增加,也可以是为了性能的提高而增加。从性能角度来说,冗余数据库可以分散数据库压力,冗余表可以分散数据量大的表的并发压力,也可以加快特殊查询的速度,冗余字段可以有效减少数据库表的连接,提高效率。例如得分情况表和学生考试总分表的结构如下:
  得分情况表(得分标识,考试安排标识,试卷标识,人员标识,扣分,实得分数,答案)
  学生考试总分表(总分标识号,人员标识,考试安排标识,成绩标识号,考试总分,是否缺考)
  从以上两表可以看出学生考试总分表中的考试总分字段是冗余的,这个分数完全可以通过得分情况表汇总得到。在学生考试总分表中,一个学生一次考试只有一条记录,而在得分情况表中,一个学生针对试卷里每一小题都要生成一条记录,一份试卷就有上百条记录。如果总分通过得分情况表汇总得到,查询速度就会比用冗余实现慢很多,由于判卷子得分是不会轻易变的,更新的频率不高,所以设计这样的冗余是比较好的。
  2、合理设计索引
  索引是提高数据库性能最物美价廉的手段了,不用增加硬件投入,也不用修改程序,只要选择设计正确的索引,数据查询速度就可能提高上百倍。在设计阶段,我们主要依据功能和性能的需求和预计的数据量以及查询数据来设计索引。选择索引应注意以下几条准则:
  (1)根据数据量决定哪些表需要增加索引,数据量小的可以只有主键。
  (2)根据使用频率决定哪些字段需要建立索引,选择经常作为连接条件、筛选条件、聚合查询、排序的字段作为索引的候选字段。
  (3)把经常一起出现的字段组合在一起,组成组合索引,组合索引的字段顺序与主键一样,也需要把最常用的字段放在前面,把重复率低的字段放在前面。
  (4)一个表不要加太多索引,因为索引影响插入和更新的速度。
  3、水平分割数据表
  对于一个拥有上百万条记录以上的表,并且经常被查询,如果此表的数据在逻辑上可以划分时,我们就可以对数据表进行水平分割以提高查询速度。一个较好的划分依据,对应用程序的简单实现有很大帮助,也能充分发挥水平分表的优势。例如应用程序只要求按月查询数据的功能,那么就可以把表按月拆分成12个,每次查询只须查询一个分表就行了。如果非要按照其它字段来分,即使将表拆分的再小,查询时还是要联合所有表,这样还不如不拆的效果好。故好的拆分依据是最非常重要的。例如:学生做题本表(学生错题本号,班级号,试题号,人员号,科目,题目来源,答题时间,对错),每位学生做过的题都保存在这张表中,每道题都对应一个或多个知识点,依据学生做错的题来分析在哪些知识点上比较薄弱。这张表在应用一段时间后,很容易达到千万条数据记录,急需拆分,那么依据什么来拆分呢?从需求上看,不管老师还是学生,最终都会把焦点落到一个学生的身上。学生会关心自己,老师会关心自己班的学生,而且每个学科的知识点是不同的,所以我们可以较容易地想到,联合科目和知识点两个字段来拆分这个表,拆分后每个表大概2万条数据,查询效率就非常高了。
  4、合理设计表的字段
  数据库最基本的单位就是字段,字段的设计好坏将对性能产生很大的影响。在设计时应注意如下几点:
  (1)尽可能用数字型的数据类型,数字型的比较比字符型的要快很多。
  (2)选择字段的数据类型尽量小,能用占用字节小的字段就不用大字段。
  (3)尽量不要允许NULL,除非必要,可以用NOT NULL+DEFAULT代替。
  (4)尽量少用IMAGE和TEXT,读写二进制字段会比较慢。(例如在为时间选择数据类型时,尽量使用timestamp,因为datetime占用8个字节,timestamp只占用4个字节,所占空间只有datetime类型的一半,查询起来会比较快些。
  二、SQL优化
  大多数的数据库都或多或少遇到一些性能问题。特别是随着业务的发展、数据量的增加、系统用户数的增多、以及系统之间越来越复杂的接口,都会导致系统的性能越来越恶化。较差性能的SQL语句是导致数据库性能问题的主要原因之一,所以优化SQL语句可以明显改善数据库的性能问题。下面按着SQL优化的一般步骤来探讨SQL语句的优化。
  1、使用show status了解各种SQL的执行频率
  使用SHOW STATUS可以获取服务器状态信息,可以根据需要显示session级别的统计结果和global级别的统计结果。对Myisam和Innodb存储引擎,Com_select参数用于统计select操作的次数,Com_insert 用于统计insert操作的次数,Com_update 用于统计update操作的次数;Com_delete用于统计delete操作的次數。通过这些参数可以很容易地了解当前数据库的应用是以查询操作为主还是以插入更新为主,以及各种SQL的执行比例的情况。对于事务型的应用,使用Com_commit和Com_rollback参数了解事务提交和回滚的情况,如果数据库回滚操作非常频繁,说明SQL编写存在问题。
  2、找出执行效率低的SQL语句
  可以通过启动--log-slow-queries[=file_name]选项,写一个包含所有执行时间超过long_query_time的SQL语句的日志文件。然后通过慢查询日志找出执行效率较低的sql语句。还可以用show processlist命令查看当前MySQL在进行的线程,可以实时的了解SQL执行情况。
  3、使用EXPLAIN分析较低效率SQL的执行计划
  通过以上步骤找到低效率的SQL语句后,使用explain可以得到MySQL是如何执行SELECT语句的信息。explain可以知道什么时候必须为表加入索引以得到一个使用索引来寻找记录的更快的SELECT。
  4、确定问题,并采取相应的优化措施
  经过上面的步骤后,我们基本可以确认问题出现的原因,采取相应的措施进行优化,以提高SQL执行的效率。从上面的例子可以确认导致效率不理想的原因是对a表的全表扫描,因此我们可以通过对a表的year字段创建索引,查询需要扫描的行数就明显减少,所以查询效率得到了提高。
  三、硬件资源升级
  当我们无法再对数据库进行优化时,数据库还是运行慢的话,这时我们就要考虑通过升级服务器的硬件资源,如扩大内存容量、增加CPU个数,或者将应用与数据进行分开部署在不同的服务器上。如果数据库运行压力还是很大,一台机器支撑不了,那么可以如下图所示,通过增加服务器,将数据库的压力分散,从而解决数据库的性能问题。
  四、小结
  数据库优化是一个很广的范围,涉及到的东西比较多,并且每个特定的数据库,其具体的优化过程也是不一样的,因此要想真正地做好数据库的优化,需要不断地参与数据库优化实践中积累经验。
其他文献
[摘 要]随着经济及科学技术丶不断发展,传统的化工企业装置已经不能满足日常生产的需求。安全仪表系统作为近年来被广泛使用的一种可以提升化工装置工作安全性的系统,已经成功的应用在化工装置中的许多环节上,但是从实际应用情况来看,依然存在许多问题需要工作人员解决。在安全仪表系统概述基础之上,阐述在化工装置中使用安全仪表系统的重要性,以及系统安装时需要关注的问题,提升安全仪表系统应用效率。  [关键词]安全
期刊
[摘 要]防渗土工膜以塑料薄膜作为防渗基材,与无纺布复合而成的土工防渗材料,其结合后不仅增大了塑料薄膜的抗拉强度和抗穿刺能力,而且由于无纺布表面粗糙,增大了接触面的摩擦系数,有利于复合土工膜及保护层的稳定。本文就复合土工膜在水库工程中施工方法和质量控制作进行了阐述。  [关键词]复合土工膜;水库建设工程;施工方法;质量控制  中图分类号:TV44 文献标识码:A 文章编号:1009-914X(20
期刊
[摘 要]环境保护是全民共同的责任和义务,每个企业都有义务采用环保减排设施和措施保证各种烟气达标排放,保证区域环境空气质量符合标准要求;火力发电等高耗能高污染物排放行业的烟气检测更加重要,依靠烟气分析仪等环保仪器仪表,能有效的监控烟气中各类污染物的排放浓度,使企业有针对性的采取环保措施,通过烟气检测能判断环保设施的处理效果,有效遏制环境的污染,烟气分析无论是对工业还是环境保护都起到了重大的作用  
期刊
[摘 要]本文对锦150块水驱开发过程中存在的问题进行了系统的分析和概括,针对存在的问题提出了改善开发效果技术对策,并对实施效果进行了客观地评价,最后提出了适合锦150断块开发的结论及建议.  [关键词]油藏概况;存在问题;技术对策;实施效果;结论;锦150断块  中图分类号:TE357.6 文献标识码:A 文章编号:1009-914X(2015)41-0252-01  1 油藏概况  锦150断
期刊
[摘 要]城市智能交通体系基础的、重要的组成部分是实时道路车速监测,在利用浮动车载体进行道路车速实时信息采集时,多数用的是出租汽车,结合了系统平台和智能系统设置的处理,从而实现了城市道路交通的实时车速监测、公布和深层次的开发和利用,其作用是为了改善车速道路交通的拥堵、节能减排、智能交通的实现起到了非常重要的作用。浮动车系统通过了对浮动车信息采集得到的原始数据,从而进行分析和处理,才能得到整个交通网
期刊
[摘 要]本文基于ZigBee组网原理计划设计了一款简单、经济、实用、灵活的,能走进大众生活的居家安全智能检测系统。该系统能实现实时显示家庭情况,意外着火报警通知主人、离家检测关闭家电、煤气等,切断一切隐患,通过短信返回控制结果等功能。  [关键词]居家安全;zigbee;智能检测  中图分类号:TD353 文献标识码:A 文章编号:1009-914X(2015)41-0256-01  在日常生活
期刊
[摘 要]环境对健身运动至关重要,随着体育产业的发展及健身健美商品经济的形成,,健身消费者对健身环境提出了更高的要求。针对目前健身场所环境现状,提出一种将物联网技术应用到健身场所进行环境改善的方法。该系统利用现有规模化经营的健身场所,用物联网理念对其进行整合,推动其终端间信息自由交互、后台信息自动分析、终端运行智能化等。实现对健身场所环境的自动监测,反馈及处理,以实现对健身场所环境的改善。,  [
期刊
[摘 要]采矿方法千差万别。本文通过对当今几种采矿方法进行分析,并对房柱采矿法、留矿采矿法、崩落采矿法和充填采矿法的应用进行分析,以便选择一种即适应我国国情,有能做到绿色开采的必由之路。  [关键词]采矿方法 应用  中图分类号:TD80 文献标识码:A 文章编号:1009-914X(2015)41-0263-01  我国境内蕴藏着非常丰富的矿产资源,但是由于矿床赋存条件的不同,矿物的性质有很大的
期刊
[摘 要]进入新世纪后,国内社会和经济得到了快速的发展,同时也加大了对煤炭的需求,现代化技术也越来越多的使用在煤炭行业中,服务于煤炭行业的机械设备越来越多,让煤炭的开采效率大幅度的提升。在煤炭企业生产活动中机械设备是其开展的必要保证,同时也是煤炭企业生产自动化程度的重要体现。但是,随着机械设备的大量应用,对其故障的维修以及故障的预防也越来越受到人们的重视。在这样的背景下,笔者在文中深入的分析了煤矿
期刊
[摘 要]随着生态理念和环境保护理念的深入推进,有关产品包装低碳化设计理念受到了越来越多行业的关注。尤其是机电产品,作为一种高耗能产业,做好低碳化发展是至关重要的。本文主要从四个方面分析了机电产品包装低碳化的设计和应用技术,并在低碳化的产品设计概念上以变压器为例进行深入探讨。  [关键词]机电产品包装;低碳化;应用技术  中图分类号:TD327.3 文献标识码:A 文章编号:1009-914X(2
期刊