1. 程式人生 > 實用技巧 >[每日一題]ES6中為什麼要使用Symbol?

[每日一題]ES6中為什麼要使用Symbol?

資料庫儲存引擎是資料庫底層軟體元件,資料庫管理系統(DBMS)使用資料引擎進行建立、查詢、更新和刪除資料操作。不同的儲存引擎提供不同的儲存機制、索引技巧、鎖定水平等功能。使用不同的儲存引擎,還可以獲得特定的功能。現在許多不同的資料庫管理系統都支援多種不同的資料引擎。Mysql的核心就是儲存引擎。

Mysql提供了不同的儲存引擎,包括處理事務安全表的引擎和處理非事務安全表的引擎。在Mysql中,不需要在整個伺服器中使用一種引擎。針對具體要求可以對每一個表使用不同的儲存引擎。

Mysql支援多種儲存引擎,如InnoDB、MylSAM、Memory、Merge、Archive、CSV、Federated等等。

一、MylSAM儲存引擎

1.1 MylSAM儲存引擎的特點

  • Mysql 5.5之前預設使用MylSAM引擎,Mysql5.5之後預設使用InnoDB引擎;
  • MylSAM引擎讀取資料較快,佔用資源較少,不支援事務,不支援外來鍵約束,但支援全文索引;
  • 讀寫相互阻塞,也就是說讀資料時就不可寫資料,學資料時就不可讀資料;
  • MylSAM引擎只能快取索引,而不能快取資料;

1.2 MylSAM使用場景

  • 不需要事務支援的業務;
  • 適用於讀資料較多的業務;
  • 併發相對較低、資料修改相對較少的業務;
    -硬體資源較差的機器可以考慮使用MylSAM引擎;

二、InnoDB儲存引擎

2.1 InnoDB儲存引擎的特點

  • 事務型資料庫的首選引擎,支援事務安全表,支援行鎖定和外來鍵,Mysql5.5.5版本之後,InnoDB作為預設儲存引擎;
  • 具有提交、回滾和崩潰恢復能力的事務安全儲存引擎,能處理巨大資料量,效能及效率高,完全支援外來鍵完整性約束;
  • 具有非常高效的快取特性,可以快取索引也可快取資料,對硬體要求較高;
  • 使用InnoDB時,將在Mysql資料目錄下的建立一個名為ibdata1的10M大小的自動擴充套件資料檔案,以及兩個ib_logfile0和ib_logfile1的5M大小的日誌檔案;

2.2 InnoDB使用場景

  • 需要資料支援的業務,高併發的業務;
  • 資料更新較為頻繁的場景,比如BBS、SNS、微博等;
  • 資料一致性要求較高的業務,比如充值轉賬、銀行卡轉賬;

三、Memory儲存引擎

3.1 Memory儲存引擎的特點

  • Memory儲存引擎將表中的資料儲存到記憶體中,為查詢和引用其他表資料提供快速訪問;
  • Memory儲存引擎執行HASH和BTREE索引,不支援BLOB和TEXT列,支援AUTO_INCREMENT列和對可包含NULL值的列的索引;
  • 當不再需要Memory表的內容時,要釋放被Memory表使用的記憶體,應該執行DELETE FROM或TRUNCATE TABLE,或者刪除整個表;

四、如何選擇合適的儲存引擎

不同的業務需要選擇不同的而儲存引擎,可以參考以下幾點進行選擇:

  • 如果要提供提交、回滾和崩潰恢復能力的事務安全能力,並要求實現併發控制,InnoDB是個很好的選擇;
  • 如果資料表主要用來插入和查詢記錄,則MylSAM引擎能提供較高的處理效率;
  • 如果只是臨時存放資料,資料量不大,並且不需要較高的安全性,可以選擇將資料儲存在記憶體中的Memory引擎,使用該引擎作為臨時表,存放查詢的中間結果;
  • 如果只有INSERT和SELECT操作,可以選擇Archive引擎,支援高併發的插入操作,如記錄日誌資訊,可以使用Archive引擎;

主要的三個資料引擎所支援的功能如下表:

功能 MylSAM Memory InnoDB
儲存限制 256TB RAM 64TB
支援事務 NO NO YES
支援全文索引 YES NO NO
支援資料索引 YES YES YES
支援雜湊快取 NO YES NO
支援資料快取 NO N/A YES
支援外來鍵 NO NO YES

五、檢視及修改表的預設儲存引擎

show engines\G;         #檢視資料庫支援的索引
show variables like 'default_storage_engine';       #檢視資料庫預設的儲存引擎
show variables like '%engine%';        #檢視全部的預設引擎
show create table t1\G;            #檢視t1表預設的引擎
alter table t1 engine=myisam;      #修改t1表的預設引擎為MylSAM