您好,欢迎访问一九零五行业门户网

MyISAM- 性能与特性的折中(1)_MySQL

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 语句来修改指针的大小。但是这样的操作会使整个表和它的索引重写。会花费大量的时间。
其它类似信息

推荐信息