MySQL数据库优化(四)
2008-06-12 11:07:59 来源:WEB开发网如果 MyISAM 表经常大量修改,那么要尽量避免修改所有的变长字段(VARCHAR, BLOB,TEXT)。尽管表中只有一个变长字段,它也会采用动态记录格式的。详情请看"15 MySQL Storage Engines and Table Types"。
通常情况下,当数据表记录变 ``大`` 之后,将表拆分成几个不同的表并没有多大用处。访问一条记录是最大的性能点在于磁盘搜索时找到记录的第一个字节上。只要找到记录的位置后,现在的大部分磁盘对于大部分的应用程序来说都能很快的读取到记录。将 MyISAM 表拆分成多个唯一有关系的情况是,数据表中动态格式的字段(见上)就可以被修改成固定大小的记录,或者需要频繁的扫描表,但是却不需要读取出大部分的字段。详情请看"15 MySQL Storage Engines and Table Types"。
如果需要频繁的对一个表做基于很多字段信息的统计信息的话,那么可能新建一个表来存储这些实时更新的统计结果会更好。类似下面的更新就会非常快了:
UPDATE tbl_name SET count_col=count_col+1 WHERE key_col=constant;
如果只需要表级锁(多个读/一个写),那么采用 MyISAM 存储引擎就非常重要了,例如 MyISAM 和 ISAM 表。这在很多的数据库中也会有不错的性能表现,因为行级锁管理程序在这种情况下也基本上没什么用。
如果需要从很大的日志表中搜集统计信息的话,可以用摘要表来代替扫描整个日志表。维护摘要表比保持 ``实时`` 的统计信息来得更快。当事情发生变化时(比如商业决策),重新建里摘要表比修改运营中的应用程序快多了。
如果可能,最好是分类报告 ``实时`` 还是 ``统计`` 的,报告所需要的数据只需要来自摘要表,摘要表的信息则是周期的从实时数据中产生。
更多精彩
赞助商链接