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

Monty說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