首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Oracle频道
中国IT教育
Google
首页 入门基础 安装配置 体系架构 PLSQL 备份恢复 性能调优 开发技术 资讯动态 考试认证 下载 专题 讨论
您现在的位置: 中国IT实验室 >> Oracle >> 性能调优 >> 正文

MySQL数据库优化(五)

  1 设计选择

  MySQL将记录数据和索引数据分别存放在不同的文件里。其他很多(几乎所有)数据库都将这记录和索引数据存在同一个文件中。我们相信MySQL的选择对于现在更大范围的系统更合适。

  另一个存储记录数据的方法是将每个字段的信息保存在独立的区域中(例如 SDBM 和Focus)。这当每个查询都要访问不只一个字段的时候会打击性能。由于当访问越多的字段后,性能下降的越厉害,因此我们认为这种模式不适合正常目的的数据库。

  更多的情况是把索引和数据保存在一起(例如 Oracle/Sysbase等)。这样的话,就能在索引的叶子页面找到记录的信息。这种布局的有利之处在于,很多时候由于索引被缓存的比较好,因此就能节省磁盘读取,不过也有如下缺点:

  •   由于需要通过读取索引才能得到数据,因此扫描表就更慢了。
  •   查询时只能根据索引来取得数据。
  •   需要更多的磁盘空间,因为必须从节点中复制索引(不能将记录保存在节点中)。
  •   删除会使表变得更慢(因为删除时并没有更新节点中的索引)。
  •   很难只缓存索引数据。

  2 让数据变得更小巧灵活

  优化的最基本原则之一就是尽可能把数据表设计的占用更少磁盘空间。这能得到巨大的性能改善,因为磁盘读取比较快,并且越小的表在处理查询内容时只需更少的主内存。在小点的字段上做索引也只需更少的资源负载。

  MySQL支持很多种不同的表类型以及记录格式。可以决定每个表要采用那种存储引擎/索引方式。根据不同的应用程序选择适当的表格式能大大提高性能。

  用以下方法可以提高表性能同时节省存储空间:

  •   尽可能使用最有效(最小的)数据类型。MySQL有好几种特定的类型能节省磁盘和内存。
  •   尽可能使用更小的整数类型。例如,MEDIUMINT通常比更合适 INT。
  •   尽可能定义字段类型为 NOT NULL。这会运行的更快,而且每个字段都会节省1个bit。如果在应用程序中确实需要用到 NULL,那么就明确的指定它。不过要避免所有的字段默认值是 NULL。
  •   在 MyISAM 表中,如果没有用到任何变长字段(VARCHAR, TEXT, 或 BLOB字段)的话,那么就采用固定大小的记录格式。这样速度更快,不过可能会浪费点空间。
  •   表的主索引应尽可能短。这样的话会每条记录都有名字标识且更高效。
  •   只创建确实需要的索引。索引有利于检索记录,但是不利于快速保存记录。如果总是要在表的组合字段上做搜索,那么就在这些字段上创建索引。索引的第一部分必须是最常使用的字段.如果总是需要用到很多字段,首先就应该多复制这些字段,使索引更好的压缩。
  •   一个字段很有可能在最开始的一些数量字符是各不相同的,因此在这些字符上做索引更合适。MySQL支持在一个字段的最左部分字符做索引。索引越短,速度越快,不仅是因为它占用更少的磁盘空间,也因为这提高了索引缓存的命中率,由此减少了磁盘搜索。详情请看“7.5.2Tuning Server Parameters”。
  •   在某些情况下,把一个频繁扫描的表分割成两个更有利。在对动态格式表扫描以取得相关记录时,它可能使用更小的静态格式表的情况下更是如此。

      [1] [2] [3] 下一页

      【责编:michael】

    中国IT教育

    相关产品和培训
    文章评论
     友情推荐链接
     认证培训
     专题推荐

     ·关于Java框架技术专题
     ·XML全攻略技术专题
     ·JAVA开源技术介绍专题
     ·Java嵌入式开发之J2ME技术专题
     ·超前体验 Oracle 11g的5个新特性…
     ·揭密使用VB.NET的五个实用技巧
     ·Oracle和SQL Server常用函数对比专题…
     ·展现C#世界 C#程序设计专题…
     ·Java入门 Tomcat的配置技巧精华专题…
     ·Oracle RMAN物理备份技术详解…
     今日更新
     社区讨论
     博客论点
     频道精选
     Oracle频道相关导航