mysql 緩存 查詢,pg數據庫和mysql數據庫區別?
1.mysql支持多種存儲引擎,存儲引擎選擇較為靈活,實際上一般都在用innodb。ddl放在server端,ddl語句的事物性支持較差,可能出現server級數據庫丟失。pg的server穩定性更好
2 mysql數據存儲結構為聚簇索引,通過主鍵查詢效率較高,但是有很多局限性,比如插入只能順序插入。不太適合超大數據非主鍵查詢,訪問二級索引需要回表。pg采用堆表存儲數據,能夠支持更大的數據量
3 pg不支持分區表,通過繼承表的形式達到分區表的目的,在分區較多成千上萬時,pg的繼承表效率較差
4 mysql有間隙鎖, postgresql數據庫執行delete操作后,表中的記錄只是被標示為刪除狀態,并沒有釋放空間,在以后的update或insert操作中該部分的空間是不能夠被重用,VACUUM作用是刪除那些已經標示為刪除的數據并釋放空間,vacuum需要定期運行,比較消耗IO
5 pg支持的數據類型(如gis),分析函數支持更多,還支持面向對象數據庫。有更多的第三方開源工具輔助系統設計和實現
6pg支持存儲過程和執行計劃緩存,表連接和復雜查詢能力更強。mysql優化器,運算符都較簡單,適合簡單的查詢操作
7 pg主從采用wal日志物理同步,mysql使用binlog邏輯同步。物理同步可靠性更高,復制性能更高。
8 mysql僅支持嵌套循環表連接(8.0支持hash連接),pg支持nl,hash,merge join
9 mysql適用應用邏輯簡單,輕數據存儲和計算的場景,pg適合復雜的數據分析和特殊應用場景