MyISAM-性能与特性的折中


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程序员都应该会用的五个工具
javascript 数组操作实用技巧
ASP连接十一种数据库的常用语法
CSS网页布局ID和Class类的命名介绍
CSS文字隐藏 { hide_text } 分析
CSS教程:first-letter实现首字下沉
Javascript 二维数组
合理创建Oracle数据库的索引
基本jquery的控制tabs打开的数量的代码
激活 ActiveX 控件
Windows7下C盘图标丢失的症状和解决方案
MSSql实例教程:MSSql数据库同步
SQL Server SQL高级查询语句小结
jQuery 核心函数以及jQuery对象

Copyright © 2016 phpStudy |