Chap23 应用优化_bzshen_modify.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
应用优化 前面章节介绍了很多数据库的优化措施。但是在实际生产环境中,由于数据库服务器本身的性能局限,就必须要对前台的应用来进行一些优化,使得前台访问数据库的压力能够减到最小。本章将介绍一些常用的应用优化方法。 使用连接池 对于访问数据库来说,建立连接的代价比较昂贵,因此,我们有必要建立“连接池”以提高访问的性能。从名字上理解,“连接池”是一个存放“连接”的“池子”,再具体一些,我们可以把连接当作对象或者设备,统一放在一个“池子”里面,以前需要直接访问数据库的地方,现在都改为从这个“池子”里面获取连接来使用。因为“池子”中的连接都已经预先创建好,可以直接分配给应用使用,因此大大减少了创建新连接所耗费的资源。连接返回后,本次访问将连接交还给“连接池”,以供新的访问使用。 减少对MySQL的访问 在实际应用中,我们的硬件资源通常是有限的、无法扩充的。这种情况下,应用有什么措施能减少对数据库的访问呢?本节将向大家介绍一些简单的方法。 避免对同一数据做重复检索 应用中需要理清对数据库的访问逻辑。能够一次连接就能够提取出所有结果的,就不用两次连接,这样可以大大减少对数据库无谓的重复访问。 例如,在某应用中需要检索某人的年龄和性别,那么就可以执行以下查询: Select old,gender from users where userid = 231; 之后又需要这个人的家庭住址,可以又执行: Select address from users where userid = 231; 这样的话,就需要向数据库提交两次请求,数据库就要做两次查询操作,其实完全可以用一句SQL语句得到想要的结果,然后把得到的结果放到变量中已备后用,比如: Select old,gender,address from users where userid = 231; 不管读者是否相信,由于上面原因导致的性能问题,在很多应用系统中都存在,因此在理清应用逻辑并向数据库提交请求前进行深思熟虑是很有必要的。 使用查询缓存 MySQL的查询缓存(MySQL Query Cache)是在4.1版本以后新增的功能,它的作用是存储SELECT查询的文本以及相应结果。如果随后收到一个相同的查询,服务器会从查询缓存中重新得到查询结果,而不再需要解析和执行查询。 查询缓存的适用对象是更新不频繁的表,当表更改(包括表结构和表数据)后,查询缓存值的相关条目被清空。 查询缓存相关的参数主要有以下几个: mysql show variables like %query_cache%; +------------------------------+---------+ | Variable_name | Value | +------------------------------+---------+ | have_query_cache | YES | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 0 | | query_cache_type | OFF | | query_cache_wlock_invalidate | OFF | +------------------------------+---------+ 6 rows in set (0.00 sec) 对于以上几个参数,具体解释如下。 have_query_cache表明服务器在安装是否已经配置了高速缓存 query_cache_size表明缓存区大小,单位为M。 query_cache_type的变量值从0到2,含义分别为: 0或者off(缓存关闭) 1或者on(缓存打开,使用SQL_NO_CACHE提示的SELECT除外) 2或者demand(只有带SQL_CACHE的SELECT语句提供高速缓存) 通过SHOW STATUS命令,可以监视查询缓存的使用状况,如表23-1所示。 表23-1 MySQL查询缓存的性能监控参数 变量 含义 Qcache_queries_in_cache 在缓存中已注册的查询数目 Qcache_inserts 被加入到缓存中的查询数目 Qcache_hits 缓存采样数数目 Qcache_lowmem_prunes 因为缺少内存而被从缓存中删除的查询数目 Qcache_not_cached 没有被缓存的查询数目(不能被缓存的,或由于QUE

文档评论(0)

yyh892289 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档