数据库以目录存储。
表以文件存储。
列以变长或定长格式存储在文件中。对bdb表,数据以页面形式存储。
支持基于内存的表。
数据库和表可在不同的磁盘上用符号连接起来。
在windows上,mysql支持用.sym文件内部符号连接数据库。
十七、mysql表类型
heap表:固定行长的表,只存储在内存中并用hash索引进行索引。
isam表:mysql 3.22中的早期b-tree表格式。
myiasm:iasm表的新版本,有如下扩展:
二进制层次的可移植性。
null列索引。
对变长行比isam表有更少的碎片。
支持大文件。
更好的索引压缩。
更好的键吗统计分布。
更好和更快的auto_increment处理。
来自sleepcat的berkeley db(bdb)表:事务安全(有begin work/commit|rollback)。
十八、mysql行类型(专指iasm/myiasm表)
如果所有列是定长格式(没有varchar、blob或text),mysql将以定长表格式创建表,否则表以动态长度格式创建。
定长格式比动态长度格式快很多并更安全。
动态长度行格式一般占用较少的存储空间,但如果表频繁更新,会产生碎片。
在某些情况下,不值得将所有varchar、blob和text列转移到另一个表中,只是获得主表上的更快速度。
利用myiasmchk(对isam,pack_iasm),可以创建只读压缩表,这使磁盘使用率最小,但使用慢速磁盘时,这非常不错。压缩表充分地利用将不再更新的日志表
十九、mysql高速缓存(所有线程共享,一次性分配)
键码缓存:key_buffer_size,默认8m。
表缓存:table_cache,默认64。
线程缓存:thread_cache_size,默认0。
主机名缓存:可在编译时修改,默认128。
内存映射表:目前仅用于压缩表。
注意:mysql没有行高速缓存,而让操作系统处理。
二十、mysql缓存区变量(非共享,按需分配)
sort_buffer:order by/group by
record_buffer:扫描表。
join_buffer_size:无键联结
myisam_sort_buffer_size:repair table
net_buffer_length:对于读sql语句并缓存结果。
tmp_table_size:临时结果的heap表大小
