当前位置:Gxlcms > mysql > Monty说MySQL的优化(四)_MySQL

Monty说MySQL的优化(四)_MySQL

时间:2021-07-01 10:21:17 帮助过:31人阅读

十六、MySQL如何次存储数据

  数据库以目录存储。

  表以文件存储。

  列以变长或定长格式存储在文件中。对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表大小

人气教程排行