mysql性能优化文档

mysql性能优化文档

ID:33464885

大小:52.00 KB

页数:8页

时间:2019-02-26

mysql性能优化文档_第1页
mysql性能优化文档_第2页
mysql性能优化文档_第3页
mysql性能优化文档_第4页
mysql性能优化文档_第5页
资源描述:

《mysql性能优化文档》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、主题:MySQL性能优化1.简介在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响。MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,仅仅是一个玩具数据库。因此在产品中使用MySQL数据库必须进行必要的优化。优化是一个复杂的任务,本文描述MySQL相关的数据库设计和查询优化,服务器端优化,存储引擎优化。2.数据库设计和查询优化在MySQLServer性能调优中,首先要考虑的就是DatabaseSchema设计,这一点是非常重要的。一个糟糕的Schema设计即使在性能调

2、优的MySQLServer上运行,也会表现出很差的性能;和Schema相似,查询语句的设计也会影响MySQL的性能,应该避免写出低效的SQL查询。这一节将详细讨论这两方面的优化。2.1SchemaDesignSchema的优化取决于将要运行什么样的query,不同的query会有不同的Schema优化方案。2.2节将介绍QueryDesign的优化。Schema设计同样受到预期数据集大小的影响。Schema设计时主要考虑:标准化,数据类型,索引。2.1.1标准化标准化是在数据库中组织数据的过程。其中包括,根据设计规则创建表并在这些表间建立关系;通过取消冗余度

3、与不一致相关性,该设计规则可以同时保护数据并提高数据的灵活性。通常数据库标准化是让数据库设计符合某一级别的范式,通常满足第三范式即可。也有第四范式(也称为BoyceCodd范式,BCNF))与第五范式存在,但是在实际设计中很少考虑。忽视这些规则可能使得数据库的设计不太完美,但这不应影响功能。标准化的特点:1)所有的“对象”都在它自己的table中,没有冗余。2)数据库通常由E-R图生成。3)简洁,更新属性通常只需要更新很少的记录。4)Join操作比较耗时。5)Select,sort优化措施比较少。6)适用于OLTP应用。非标准化的特点:1)在一张表中存储很多

4、数据,数据冗余。2)更新数据开销很大,更新一个属性可能会更新很多表,很多记录。3)在删除数据是有可能丢失数据。4)Select,order有很多优化的选择。5)适用于DSS应用。标准化和非标准化都有各自的优缺点,通常在一个数据库设计中可以混合使用,一部分表格标准化,一部分表格保留一些冗余数据:1)对OLTP使用标准化,对DSS使用非标准化2)使用物化视图。MySQL不直接支持该数据库特性,但是可以用MyISAM表代替。3)冗余一些数据在表格中,例如将ref_id和name存在同一张表中。但是要注意更新问题。4)对于一些简单的对象,直接使用value作为建。例

5、如IPaddress等5)ReferencebyPRIMARY/UNIQUEKEY。MySQL可以优化这种操作,例如:java代码1.selectcity_name2.fromcity,state3.wherestate_id=state.idandstate.code=‘CA’”convertedto“selectcity_namefromcitywherestate_id=122.1.2数据类型最基本的优化之一就是使表在磁盘上占据的空间尽可能小。这能带来性能非常大的提升,因为数据小,磁盘读入较快,并且在查询过程中表内容被处理所占用的内存更少。同时,在更小

6、的列上建索引,索引也会占用更少的资源。可以使用下面的技术可以使表的性能更好并且使存储空间最小:1)使用正确合适的类型,不要将数字存储为字符串。2)尽可能地使用最有效(最小)的数据类型。MySQL有很多节省磁盘空间和内存的专业化类型。3)尽可能使用较小的整数类型使表更小。例如,MEDIUMINT经常比INT好一些,因为MEDIUMINT列使用的空间要少25%。4)如果可能,声明列为NOTNULL。它使任何事情更快而且每列可以节省一位。注意如果在应用程序中确实需要NULL,应该毫无疑问使用它,只是避免默认地在所有列上有它。5)对于MyISAM表,如果没有任何变长

7、列(VARCHAR、TEXT或BLOB列),使用固定尺寸的记录格式。这比较快但是不幸地可能会浪费一些空间。即使你已经用CREATE选项让VARCHAR列ROW_FORMAT=fixed,也可以提示想使用固定长度的行。6)使用samplecharacterset,例如latin1。尽量少使用utf-8,因为utf-8占用的空间是latin1的3倍。可以在不需要使用utf-8的字段上面使用latin1,例如mail,url等。2.1.3索引所有MySQL列类型可以被索引。对相关列使用索引是提高SELECT操作性能的最佳途径。使用索引应该注意以下几点:1)MySQ

8、L只会使用前缀,例如key(a,b)…whereb=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。