首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL優化八招(二):鎖表代替事務、外鍵、索引建立原則

     編輯:MySQL 資料庫相關知識

招數4:事務與鎖表的權衡

事務保證ACID,但**獨占鎖降低併發**。高併發電商場景下,LOCK TABLES ... WRITE + 讀改寫 + UNLOCK TABLES可替代簡單事務:

LOCK TABLE inventory WRITE;
SELECT Quantity FROM inventory WHERE Item='book';
-- 業務計算
UPDATE inventory SET Quantity=11 WHERE Item='book';
UNLOCK TABLES;

WRITE鎖阻塞其它讀寫,粒度粗但無事務開銷,**低併發/簡單邏輯適用**。

招數5:外鍵保證關聯完整性

CREATE TABLE customerinfo (
    CustomerID INT NOT NULL PRIMARY KEY
) ENGINE=INNODB;

CREATE TABLE salesinfo (
    SalesID INT NOT NULL,
    CustomerID INT NOT NULL,
    PRIMARY KEY(CustomerID, SalesID),
    FOREIGN KEY (CustomerID) REFERENCES customerinfo(CustomerID) ON DELETE CASCADE
) ENGINE=INNODB;
  • 必須用InnoDB(MyISAM不支持外鍵)
  • ON DELETE CASCADE級聯刪除從表記錄
  • 應用層無需手動維護關聯,數據庫層強約束

招數6:索引建立黃金法則

  • 建在JOIN、WHERE、ORDER BY涉及的列
  • 避開大量重複值列(如ENUM型province),索引無效反拖性能
  • 建表時同步建索引,或後續ALTER TABLE/CREATE INDEX
  • 全文索引FULLTEXT**僅MyISAM支援**;大數據先導數據後建全文索引(極快),勿先建索引再導數據(極慢)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved