MySQL查询优化系列讲座之数据类型与效率
yisam-recover=FORCE选项来启动服务器。这个选项会使服务器在打开MyISAM数据表的时候检查它们,如果有必要就自动地修复它们。
对于复制(replication)从属服务器,你可能希望使用--delay-key-write=ALL来延迟所有的MyISAM数据表索引的刷新,不管在主服务器上最初是如何建立它们的。 · 使用压缩的客户端/服务器协议来减少网络上数据传输的数量。对于大多数MySQL客户端来说,我们都可以使用--compress命令行选项来指定它。通常,这个选项只是在较慢的网络上使用,这是因为压缩操作会花费大量的处理器时间。 · 让MySQL替你插入默认值。也就是说,无论如何都不要给INSERT语句中那些可以赋予默认值的列指定值。平均起来,你的语句更短,减少了通过网络发送到服务器的字符数量。此外,由于语句包含的值较少,服务器执行的分析和值转换操作也较少。 · 对于MyISAM数据表,如果你必须把大量的数据载入一个新表,最好建立不带索引的表,载入数据,然后建立索引,这样的工作次序的速度要快一些。一次性地建立索引比每行都更新索引的速度要快一些。对于已经带有索引的表,如果预先删除或禁止索引,后来再重新建立或者激活索引,那么数据载入的速度也要快一些。这些策略不能应用于InnoDB或BDB表,它们没有对分离的索引建立过程进行优化。 如果你考虑使用删除或禁止索引的策略,把数据载入MyISAM数据表,那么在评估获得的优势的时候,就需要考虑整个环境。如果你把少量的数据载入大型的数据表中,那么在没有任何特殊准备工作的情况下,重新建立索引花费的时间可能比载入数据的时间还要长。 要删除并且重新建立索引,需要使用DROP INDEX和CREATE INDEX,或者使用与索引相关的ALTER TABLE。禁止和激活索引有两种办法: · 你可用使用ALTER TABLE的DISABLE KEYS和ENABLE KEYS形式: ALTER TABLE tbl_name DISABLE KEYS; 这些语句关闭或打开表中非唯一(non-unique)索引的更新过程。 ALTER TABLE的DISABLE KEYS和ENABLE KEYS子句是索引禁止和激活操作的推荐方法,因为服务器也是这样操作的(如果你使用LOAD DATA语句把数据载入空的MyISAM表中,服务器会自动地执行这样的优化操作)。 · Myisamchk工具可以执行索引维护。它直接在数据表文件上进行操作,因此使用它的时候,你必须拥有数据表文件的写入权限。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |