2006-08-24

MySQL手册版本 5.0.20-MySQL优化(六)

来源: 中国本站网 作者:佚名 评论 0 条
 

7.4优化数据库结构

7.4.1设计选择

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

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

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

由于需要通过读取索引才能得到数据,因此扫描表就更慢了。

查询时只能根据索引来取得数据。

需要更多的磁盘空间,因为必须从节点中复制索引(不能将记录保存在节点中)。

删除会使表变得更慢(因为删除时并没有更新节点中的索引)。

很难只缓存索引数据。

7.4.2让数据变得更小巧灵活

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

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

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

尽可能使用最有效(最小的)数据类型。MySQL有好几种特定的类型能节省磁盘和内存。

尽可能使用更小的整数类型。例如,MEDIUMINT通常比更合适 INT。

尽可能定义字段类型为 NOT NULL。这会运行的更快,而且每个字段都会节省1个bit。假如在应用程序中确实需要用到 NULL,那么就明确的指定它。不过要避免所有的字段默认值是 NULL。

在 MyISAM 表中,假如没有用到任何变长字段(VARCHAR, TEXT, 或 BLOB字段)的话,那么就采用固定大小的记录格式。这样速度更快,不过可能会浪费点空间。详情请看“15.1.3 MyISAMTable Storage Formats”。

表的主索引应尽可能短。这样的话会每条记录都有名字标识且更高效。

只创建确实需要的索引。索引有利于检索记录,但是不利于快速保存记录。假如总是要在表的组合字段上做搜索,那么就在这些字段上创建索引。索引的第一部分必须是最常使用的字段.假如总是需要用到很多字段,首先就应该多复制这些字段,使索引更好的压缩。

一个字段很有可能在最开始的一些数量字符是各不相同的,因此在这些字符上做索引更合适。MySQL支持在一个字段的最左部分字符做索引。索引越短,速度越快,不仅是因为它占用更少的磁盘空间,也因为这提高了索引缓存的命中率,由此减少了磁盘搜索。详情请看“7.5.2Tuning Server Parameters”。
共3页: 上一页 1 [2] [3] 下一页

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:新手入门--全面介绍MySQL的基础应用  
下一篇:MySQL存在权限提升及安全限制绕过漏洞
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号