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年土地抵押合同标准版本 4页

2025年国家范本装修合同 10页

2025年四年级下册语文教案将心比心 3页

2025年商住楼土建装修施工各部分分项施工方案.. 24页

2025年咖啡馆委托管理合同 4页

2025年向阳小学学校校园文化建设实施计划方案.. 7页

2025年发泡水泥板施工专业技术方案 12页

2025年县电力局迁扩建项目建设可行性研究报告.. 79页

2025年危险化学品泄漏事故应急救援预案演练方.. 10页

2025年南方市X厂职工家属宿舍施工组织方案 29页

2025年单价数量与总价之间的关系说课稿 4页

2025年医院绩效考核方案范本参考整理版 13页

2025年劳动作业中常见的职业危害 8页

2025年加油站改造工程施工方案 73页

2025年办公楼室内设计方案说明 6页

2025年初中记事作文范文难忘的童年趣事600字 2页

2025年初中劳技教学方案 8页

2025年创优质结构专项技术方案设计 55页

2025年出租汽车经营承诺书 5页

2025年写作素材拔河 1页

2025年内爬式塔吊方案 26页

小学科学新教科版一年级下册第一单元第1课《观.. 13页

2025年武汉警官职业学院单招职业技能测试题库.. 73页

2025年辽宁经济职业技术学院单招职业技能测试.. 75页

2025年人教版数学七年级下册期末考试试卷及答.. 19页

2025年度新版一级建造师教材 6页

学前班拼音教案全集(共44页) 51页

万科实测检查数据上墙操作指引 17页

维克多新高中英语阅读高一 4页

建筑工程量计算方法(含图与计算公式) 21页