MyISAM-性能与特性的折中_MySQL

WBOY
发布: 2016-06-01 13:55:39
原创
770 人浏览过

MyISAM是MySQL默认的存储引擎。MyISAM在性能和特性上提供了一个很好的折中的解决办法。特性有,全文索引,压缩,GIS函数。MyISAM并不支持事物和行锁。

  存储

  MyISAM把表存储在两个文件中。一个数据文件,一个索引文件。扩展名为.MYD和.MYI。MyISAM的格式是平台独立的。意思就是你可以把这两个文件拷贝在任意的平台上。

  MyISAM可以包含动态或静态列。MySQL根据表的定义来决定使用哪种格式。MyISAM表的行数限制在于,硬盘空间和操作系统所允许存在的最大文件。

  MyISAM表在MySQL5.0中,默认的是动态长度的行,以及可操作256TB数据,使用6字节的指针指向数据记录。早期的MySQL默认指针为4字节,支持4GB的数据。所有的MySQL版本支持的指针大小上限为8字节。为了改变MyISAM表的指针大小,你必须指定MAX_ROWS,AVG_ROW_LENGTH的值。这两个数据指出了你所需要空间的总数。


  CREATE TABLE mytable (
  a    INTEGER  NOT NULL PRIMARY KEY,
  b    CHAR(18) NOT NULL
  ) MAX_ROWS = 1000000000 AVG_ROW_LENGTH = 32;

  这个例子中,我们告诉MySQL对这个表分配空间至少是32G。看看MySQL到底分配了多少。我们来看看。

  mysql> SHOW TABLE STATUS LIKE 'mytable' G
  *************************** 1. row ***************************
  Name: mytable
  Engine: MyISAM
  Row_format: Fixed
  Rows: 0
  Avg_row_length: 0
  Data_length: 0
  Max_data_length: 98784247807
  Index_length: 1024
  Data_free: 0
  Auto_increment: NULL
  Create_time: 2002-02-24 17:36:57
  Update_time: 2002-02-24 17:36:57
  Check_time: NULL
  Create_options: max_rows=1000000000 avg_row_length=32
  Comment:
  1 row in set (0.05 sec)


  我们看到了Create_options的值,是我们所设置的。也看到了Max_data_length的值接近了91GB。你可以通过ALTER TABLE 语句来修改指针的大小。但是这样的操作会使整个表和它的索引重写。会花费大量的时间。

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!