- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第16章性能优化
本章概述MySQL性能优化就是通过合理安排资源、调整系统参数使MySQL运行得更快、更节省资源。MySQL性能优化包括查询速度优化、数据库结构优化、MySQL服务器优化等。
本章学习目标?了解什么是数据库性能优化;?掌握常用的优化查询的方法;?掌握常用的优化数据库结构的方法;?掌握常用的优化MySQL服务器的方法;?熟练掌握综合案例中性能优化的方法和技巧。
目化MySQL服务器优化数据库结构临时表性能优化优化查询05服务器语句超时处理06创建全局通用表空间07本章小结
优化查询MySQL数据库优化是多方面的,原则是减少系统的瓶颈,减少资源的占用,增加系统的反应速度。在MySQL中,可以使用SHOWSTATUS语句查询一些MySQL数据库的性能参数。SHOWSTATUS语句语法如下:SHOWSTATUSLIKEvalue;优化简介
优化查询MySQL中提供了EXPLAIN语句和DESCRIBE语句,用来分析查询语句。语法如下:EXPLAIN[EXTENDED]SELECTselect_options分析查询语句
优化查询分析未使用索引时的查询情况,EXPLAIN语句如下:EXPLAINSELECT*FROMtb_bookWHEREauthor=明日科技;在tb_book表的author字段上加上索引,再分析:索引对查询速度的影响
优化查询使用LIKE关键字的查询语句使用多列索引的查询语句使用OR关键字的查询语句使用索引查询
优化查询在MySQL中,可以使用连接(JOIN)查询来替代子查询。连接查询不需要建立临时表,其速度比子查询要快,如果查询中使用索引的话,性能就会更好。连接之所以更有效率,是因为MySQL不需要在内存中创建临时表来完成查询工作。优化子查询
目录优化MySQL服务器优化数据库结构临时表性能优化优化查询服务器语句超时处理创建全局通用表空间本章小结01020304050607
优化数据库结构将字段很多的表分解成多个表:对于字段较多的表,如果有些字段的使用频率很低,那么可以将这些字段分离出来形成新表。当一个表的数据量很大时,会由于使用频率低的字段的存在而变慢。增加中间表:通过建立中间表,把需要经常联合查询的数据插入中间表中,然后将原来的联合查询改为对中间表的查询,以此来提高查询效率。操作方法为:首先,分析经常联合查询表中的字段;然后,使用这些字段建立一个中间表,并将原来联合查询的表的数据插入中间表中;最后,使用中间表来进行查询。增加冗余字段:设计数据库表时应尽量遵循范式理论的规约,尽可能减少冗余字段,让数据库设计看起来精致、优雅。但是,合理地加入冗余字段可以提高查询速度。
目录优化MySQL服务器优化数据库结构临时表性能优化优化查询服务器语句超时处理创建全局通用表空间本章小结01040506070302
优化MySQL服务器优化MySQL服务器主要从两个方面来优化,一方面是对硬件进行优化;另一方面是对MySQL服务的参数进行优化。(1)配置较大的内存。足够大的内存是提高MySQL数据库性能的方法之一。内存的速度比磁盘I/O快得多,可以通过增加系统的缓冲区容量使数据在内存中停留的时间更长,以减少磁盘I/O。(2)配置高速磁盘系统,以减少读盘的等待时间,提高响应速度。(3)合理分布磁盘I/O,把磁盘I/O分散在多个设备上,以减少资源竞争,提高并行操作能力。(4)配置多处理器,MySQL是多线程的数据库,多处理器可同时执行多个线程。优化服务器硬件
优化MySQL服务器通过优化MySQL的参数可以提高资源利用率,从而达到提高MySQL服务器性能的目的。MySQL服务的配置参数都在my.cnf或者my.ini文件的[MySQLd]组中。key_buffer_size:表示索引缓冲区的大小。table_cache:表示同时打开的表的个数。query_cache_size:表示查询缓冲区的大小。sort_buffer_size:表示排序缓存区的大小。read_buffer_size:表示每个线程连续扫描时为扫描的每个表分配的缓冲区的大小(字节)。read_rnd_buffer_size:表示为每个线程保留的缓冲区的大小。innodb_buffer_pool_size:表示InnoDB类型的表和索引的最大缓存。max_connections:表示数据库的最大连接数。innodb_flush_log_at_trx_commit:表示何时将缓冲区的数据写入日志文件,并且将日志文件写入磁盘中。back_log:表示在MySQL暂时停止回答新请求之前的短时间内,多少个请求可以被存储在堆栈中。interactive_timeout:表示服务器在关闭连接前等待行动的秒数。优化My
文档评论(0)