1 / 12
文档名称:

《mysql数据库优化总结》.doc

格式:doc   大小:970KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

《mysql数据库优化总结》.doc

上传人:changdan5609 2019/3/31 文件大小:970 KB

下载得到文件列表

《mysql数据库优化总结》.doc

相关文档

文档介绍

文档介绍:MySQL数据库优化总结       对于一个以数据为中心的应用,数据库的好坏直接影响到程序的性能,因此数据库性能至关重要。一般来说,要保证数据库的效率,要做好以下四个方面的工作:数据库设计、sql语句优化、数据库参数配置、恰当的硬件资源和操作系统,这个顺序也表现了这四个工作对性能影响的大小。下面我们逐个阐明:            一、数据库设计适度的反范式,注意是适度的我们都知道三范式,基于三范式建立的模型是最有效保存数据的方式,也是最容易扩展的模式。我们在开发应用程序时,设计的数据库要最大程度的遵守三范式,特别是对于OLTP型的系统,三范式是必须遵守的规则。当然,三范式最大的问题在于查询时通常需要join很多表,导致查询效率很低。所以有时候基于性能考虑,我们需要有意的违反三范式,适度的做冗余,以达到提高查询效率的目的。注意这里的反范式是适度的,必须为这种做法提供充分的理由。下面就是一个糟糕的实例: 在这里,为了提高学生活动记录的检索效率,把单位名称冗余到学生活动记录表里。单位信息有500条记录,而学生活动记录在一年内大概有200万数据量。如果学生活动记录表不冗余这个单位名称字段,只包含三个int字段和一个timestamp字段,只占用了16字节,是一个很小的表。而冗余了一个varchar(32)的字段后则是原来的3倍,检索起来相应也多了这么多的I/O。而且记录数相差悬殊,500VS2000000,导致更新一个单位名称还要更新4000条冗余记录。由此可见,这个冗余根本就是适得其反。下面这个冗余就很好可以看到,[学生考试总分]是冗余的,这个分数完全可以通过[得分情况]汇总得到。在【学生考试总分】里,一次考试一个学生只有一条记录,而在【得分情况】里,一个学生针对试卷里一个小题的一个小问一条记录,粗略的算一下比例大概是1:100。而且判卷子得分是不会轻易变的,更新的频率不高,所以说这个冗余是比较好的。   适当建立索引说起提高数据库性能,索引是最物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行个正确的’createindex’,查询速度就可能提高百倍千倍,这可真有诱惑力。可是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的I/O。由于索引的存储结构不同于表的存储,一个表的索引所占空间比数据所占空间还大的情况经常发生。这意味着我们在写数据库的时候做了很多额外的工作,而这个工作只是为了提高读的效率。因此,我们建立一个索引,必须保证这个索引不会“亏本”。一般需要遵守这样的规则: 索引的字段必须是经常作为查询条件的字段; 如果索引多个字段,第一个字段要是经常作为查询条件的。如果只有第二个字段作为查询条件,这个索引不会起到作用; 索引的字段必须有足够的区分度; Mysql对于长字段支持前缀索引; 对表进行水平划分如果一个表的记录数太多了,比如上千万条,而且需要经常检索,那么我们就有必要化整为零了。如果我拆成100个表,那么每个表只有10万条记录。当然这需要数据在逻辑上可以划分。一个好的划分依据,有利于程序的简单实现,也可以充分利用水平分表的优势。比如系统界面上只提供按月查询的功能,那么把表按月拆分成12个,每个查询只查询一个表就够了。如果非要按照地域来分,即使把表拆的再小,查询还是要联合所有表来查,还不如不拆了。所以一个好的拆分依据是最重要的。这里有个比较好的实例         每个学生做过的题都记录在这个表里,包括对题和错题。每个题会对应一个或多个知识点,我们需要根据错题来分析学生在哪个知识点上掌握的不足。这个表很容易达到千万级,迫切需要拆分,那么根据什么来拆呢?从需求上看,无论是老师还是学生,最终会把焦点落在一个学生的身上。学生会关心自己,老师会关心自己班的学生。而且每个学科的知识点是不同的。所以我们很容易想到,联合学科和知识点两个字段来拆分这个表。这样拆下来,每个表大概2万条数据,检索效率非常高。    对表进行垂直划分有些表记录数并不多,可能也就2、3万条,但是字段却很长,表占用空间很大,检索表时需要执行大量I/O,严重降低了性能。这个时候需要把大的字段拆分到另一个表,并且该表与原表是一对一的关系。         【试题内容】、【答案信息】两个表,最初是作为几个字段添加到【试题信息】里的,可以看到试题内容和答案这两个字段很长,在表里有3万记录时,表已经占了1G的空间,在列试题列表时非常慢。经过分析,发现系统很多时候是根据【册】、【单元】、类型、类别、难易程度等查询条件,分页显示试题详细内容。而每次检索都是这几个表做join,每次要扫描一遍1G的表,很郁闷啊。我们完全可以把内容和答案拆分成另一个表,只有显示详细内容的时候才读这个大表,由此就产生了【试题内容】、【答案信

最近更新

2025年度商业数据分析与商业运营决策支持合同.. 9页

2025年度员工租赁住房租赁合同违约金支付协议.. 8页

2025年度同债务债务重组及债务延期协议书 7页

2025年度合作社农业机械租赁合同 9页

2025年度台球厅租赁与赛事赞助权益合同 9页

2025年度叉车设备维修及售后服务质量保证合同.. 9页

2025年度危险品柴油运输合同协议书(智能监控.. 8页

2025年度协商解除劳动合同模板(含离职后客户.. 8页

2025年度医药公司企业社会责任合作协议 9页

2025年度北京市住建委房屋租赁违约责任合同 8页

2025年度劳动合同法解读与员工关系管理合同 7页

2025年度办公设备采购与智能化升级合同 8页

2025年度别墅私家花园绿植养护与生态园林景观.. 9页

2025年度出租车司机智能车载娱乐系统合作合同.. 9页

2025年度冰淇淋店租赁合同(含冰淇淋制作及设.. 9页

2025年度农村自建房产权登记与买卖合同 8页

2025年度农村住房建设施工安全生产培训合同 8页

2025年微机调速器项目发展计划 72页

2025年家居棉品合作协议书 73页

疫情背景下供应链韧性增强策略-全面剖析 31页

隐面消除算法的性能评估与优化-全面剖析 27页

毕业给母校的一封信(32篇) 47页

班主任新学期教学工作计划15篇 52页

给阿姨的一封信(30篇) 38页

药店实习工作总结(4篇) 20页

读书节开幕式活动主持稿(17篇) 40页

销售文员的岗位职责(28篇) 19页

《续修四库全书总目提要》的整理方法与评价 2页

《日英汉热加工技术词典》即将发行 2页

第二章会计账户与复式记账法 33页