快速业务通道

个人经验总结:MySQL数据库优化技巧集锦

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-17
sum(value) from trans where customer_id=some_id;

mysql> update customer set total_value=sum_from_previous_statement

where customer_id=some_id;

mysql> UNLOCK TABLES;


BDB表如何进行事务:

mysql> BEGIN WORK;

mysql> select sum(value) from trans where customer_id=some_id;

mysql> update customer set total_value=sum_from_previous_statement

where customer_id=some_id;

mysql> COMMIT;


注意你可以通过下列语句回避事务:

UPDATE customer SET value=value+new_value WHERE customer_id=some_id;

 


三十二、使用REPLACE的例子


REPLACE的功能极像INSERT,除了如果一条老记录在一个唯一索引上具有与新纪录相同的值,那么老记录在新纪录插入前则被删除。不使用


SELECT 1 FROM t1 WHERE key=#

IF found-row

LOCK TABLES t1

DELETE FROM t1 WHERE key1=#

INSERT INTO t1 VALUES (...)

UNLOCK TABLES t1;

ENDIF


而用

REPLACE INTO t1 VALUES (...)

 

三十三、一般技巧


使用短主键。联结表时使用数字而非字符串。

当使用多部分键码时,第一部分应该时最常用的部分。

有疑问时,首先使用更多重复的列以获得更好地键码压缩。

如果在同一台机器上运行MySQL客户和服务器,那么在连接MySQL时则使用套接字而不是TCP/IP(这可以提高性能7.5%)。可在连接MySQL服务器时不指定主机名或主机名为localhost来做到。

如果可能,使用--skip-locking(在某些OS上为默认),这将关闭外部锁定并将提高性能。

使用应用层哈希值而非长键码:

SELECT * FROM table_name WHERE hash=md5(concat(col1,col2)) AND

col_1=''constant'' AND col_2=''constant''


在文件中保存需要以文件形式访问的BLOB,在数据库中只保存文件名。

删除所有行比删除一大部分行要快。

如果SQL不够快,研究一下访问数据的较底层接口。

 


三十四、使用MySQL 3.23的好处


MyISAM:可移植的大表格式

HEAP:内存中的表

Berkeley DB:支持事务的表。

众多提高的限制

动态字符集

更多的STATUS变量

CHECK和REPAIR表

更快的GROUP BY和DISTINCT

LEFT JOIN ... IF NULL的优化

CREATE TABLE ... SELECT

CREATE TEMPORARY table_name (...)

临时HEAP表到MyISAM表的自动转换

复制

mysqlhotcopy脚本

 

三十五、正在积极开发的重要功能


改进事务处理

失败安全的复制

正文搜索

多个表的删除(之后完成多个表的更新

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号