网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > 性能调优 > MySQL数据库优化(七)-性能调优  

MySQL数据库优化(七)-性能调优

2008-06-14  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

  为了能最小化磁盘I/O,MyISAM 存储引擎采用了很多数据库系统使用的一种策略。它采用一种机制将最经常访问的表保存在内存区块中:

中国网管论坛bbs.bitsCN.com

  •   对索引区块来说,它维护着一个叫索引缓存(索引缓冲)的结构体。这个结构体中放着许多那些最常使用的索引区块的缓冲区块。
  •   对数据区块来说,MySQL没有使用特定的缓存。它依靠操作系统的本地文件系统缓存。

  本章首先描述了 MyISAM 索引缓存的基本操作。然后讨论在MySQL 4.1中所做的改进,它提高了索引缓存性能,同时能更好地控制缓存操作:

网管论坛bbs_bitsCN_com

  •   线程之间不再是串行地访问索引缓存。多个线程可以并行地访问索引缓存。
  •   可以设置多个索引缓存,同时也能指定数据表索引到特定的缓存中。

  索引缓存机制对 ISAM 表同样适用。不过,这种有效性正在减弱。自从MySQL 3.23开始 MyISAM 表类型引进之后,ISAM 就不再建议使用了。MySQL 4.1更是延续了这个趋势,ISAM 类型默认被禁用了。

中国网管论坛bbs.bitsCN.com

  可以通过系统变量 key_buffer_size 来控制索引缓存区块的大小。如果这个值大小为0,那么就不使用缓存。当这个值小得于不足以分配区块缓冲的最小数量(8)时,也不会使用缓存。

网管u家u.bitscn@com

  当索引缓存无法操作时,索引文件就只通过操作系统提供的本地文件系统缓冲来访问(换言之,表索引区块采用的访问策略和数据区块的一致)。

网管下载dl.bitscn.com

  一个索引区块在 MyISAM 索引文件中是一个连续访问的单元。通常这个索引区块的大小和B树索引节点大小一样(索引在磁盘中是以B树结构来表示的。这个树的底部时叶子节点,叶子节点之上则是非叶子节点)。 网管联盟bitsCN_com

  在索引缓存结构中所有的区块大小都是一样的。这个值可能等于,大于,或小于表的索引区块大小。通常这两个值是不一样的。

网管网www_bitscn_com

  当必须访问来自任何表的索引区块时,服务器首先检查在索引缓存中是否有可用的缓冲区块。如果有,服务器就访问缓存中的数据,而非磁盘。就是说,它直接存取缓存,而不是存取磁盘。否则,服务器选择一个(多个)包含其它不同表索引区块的缓存缓冲区块,将它的内容替换成请求表的索引区块的拷贝。一旦新的索引区块在缓存中了,索引数据就可以存取了。 网管bitscn_com

  当发生被选中要替换的区块内容修改了的情况时,这个区块就被认为'脏'了。那么,在替换之前,它的内容就必须先刷新到它指向的标索引。 网管联盟bitsCN@com

  通常服务器遵循LRU(最近最少使用)策略:当要选择替换的区块时,它选择最近最少使用的索引区块。为了想要让选择变得更容易,索引缓存模块会维护一个包含所有使用区块特别的队列(LRU链)。当一个区块被访问了,就把它放到队列的最后位置。当区块要被替换时,在队列开始位置的区块就是最近最少使用的,它就是第一候选删除对象。 中国网管论坛bbs.bitsCN.com

网管联盟bitsCN@com


TAGs   性能   优化   数据库   索引   区块       使用   访问   一个   这个      
 上一篇:MySQL数据库优化(六)-性能调优   下一篇:MySQL数据库优化(八)-性能调优
MySQL数据库优化(七)-性能调优 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: