程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Monty說MySQL的優化(七)

Monty說MySQL的優化(七)

編輯:MySQL綜合教程

本文是Monty在O'Reilly Open Source Convention 2000大會上的演講之七,涉及MySQL的事務、使用REPLACE、MySQL的一般技巧、使用MySQL高版本的好處、正在積極開發的重要功能五個方面,是篇詳盡的MySQL優化文檔

三十一、事務的例子

MyIASM表如何進行事務處理:
mysql> LOCK TABLES trans READ, customer WRITE;
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> 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腳本

三十五、正在積極開發的重要功能

改進事務處理
失敗安全的復制
正文搜索
多個表的刪除(之後完成多個表的更新)
更好的鍵碼緩存
原子RENAME (RENAME TABLE foo as foo_old, foo_new as foo)
查詢高速緩存
MERGE TABLES
一個更好的GUI客戶程序

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved