Home  >  Article  >  Database  >  Monty说MySQL的优化(四)_MySQL

Monty说MySQL的优化(四)_MySQL

WBOY
WBOYOriginal
2016-06-01 14:01:02903browse

十六、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表大小

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn