当前位置:首页 > 网络编程 > 数据库 > Mysql > 百万记录级的MySQL数据库的优化(二)

百万记录级的MySQL数据库的优化(二)

点击次数:95 次 发布日期:2008-10-03 07:48:18 作者:zjj(陈皓东)
源代码网推荐

源代码网整理以下十五、优化表

源代码网整理以下MySQL拥有一套丰富的类型。你应该对每一列尝试使用最有效的类型。
ANALYSE过程可以帮助你找到表的最优类型:SELECT * FROM table_name PROCEDURE ANALYSE()。
对于不保存NULL值的列使用NOT NULL,这对你想索引的列尤其重要。
将ISAM类型的表改为MyISAM。
如果可能,用固定的表格式创建表。
不要索引你不想用的东西。
利用MySQL能按一个索引的前缀进行查询的事实。如果你有索引INDEX(a,b),你不需要在a上的索引。
不在长CHAR/VARCHAR列上创建索引,而只索引列的一个前缀以节省存储空间。CREATE TABLE table_name (hostname CHAR(255) not null, index(hostname(10)))
对每个表使用最有效的表格式。
在不同表中保存相同信息的列应该有同样的定义并具有相同的列名。

源代码网整理以下--------------------------------------------------------------------------------

源代码网整理以下十六、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表大小。

源代码网整理以下--------------------------------------------------------------------------------

源代码网整理以下 

zjj(陈皓东)供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华