pg 與 mysql 的區別

2022-07-11 23:09:11 字數 1713 閱讀 4675

create database test;

drop database test;

int 4位元組

float 4位元組

double 8位元組

char 定長位元組

varchar 不定長位元組

create table if not exists `test_tb`(

`id` int unsigned auto_increment,

`title` varchar(100) not null,

`author` varchar(100),

`date` date,

primary key(`id`)

)engine=innodb default charset=utf8;

mysql 事務、

原子性:乙個事務中的所有操作,要麼全部完成,要麼全部都不完成,

中間過程發生錯誤,則回退到最原始的狀態

一致性:在事務開始之前和事務結束以後,資料庫的完整性沒有被破環

隔離性:資料庫執行多個併發事務同時對其資料進行讀寫和修改的能力,

隔離性可以防止多個事務併發執行時由於交叉執行而導致的資料不一直,

永續性:事務處理結束後,對資料的修改是永久性的,即便系統故障也不會丟失

都是免費、開源、強大、且功能豐富的資料庫

一.postgresql相對於mysql的優勢

1、在sql的標準實現上要比mysql完善,而且功能實現比較嚴謹;

2、儲存過程的功能支援要比mysql好,具備本地快取執行計畫的能力;

3、對錶連線支援較完整,優化器的功能較完整,支援的索引型別很多,複雜查詢能力較強;

4、pg主表採用堆表存放,mysql採用索引組織表,能夠支援比mysql更大的資料量。

5、pg的主備複製屬於物理複製,相對於mysql基於binlog的邏輯複製,資料的一致性更加可靠,

複製效能更高,對主機效能的影響也更小。

6、mysql的儲存引擎外掛程式化機制,存在鎖機制複雜影響併發的問題,而pg不存在。

二、mysql相對於pg的優勢:

1、innodb的基於回滾段實現的mvcc機制,相對pg新老資料一起存放的基於xid的mvcc機制,是佔優的。

新老資料一起存放,需要定時觸 發vacuum,會帶來多餘的io和資料庫物件加鎖開銷,引起資料庫整體的併發能力下降。

而且vacuum清理不及時,還可能會引發資料膨脹;

2、mysql採用索引組織表,這種儲存方式非常適合基於主鍵匹配的查詢、刪改操作,但是對錶結構設計存在約束;

3、mysql的優化器較簡單,系統表、運算子、資料型別的實現都很精簡,非常適合簡單的查詢操作;

4、mysql分割槽表的實現要優於pg的基於繼承表的分割槽實現,主要體現在分割槽個數達到上千上萬後的處理效能差異較大。

5、mysql的儲存引擎外掛程式化機制,使得它的應用場景更加廣泛,比如除了innodb適合事務處理場景外,myisam適合靜態資料的查詢場景。

三、總結

開源資料庫都不是很完善,商業資料庫oracle在架構和功能方面都還是完善很多的。

從應用場景來說,pg更加適合嚴格的企業應用場景(比如金融、電信、erp、crm),

而mysql更加適合業務邏輯相對簡單、資料可靠性要求較低的網際網路場景(比如google、facebook、alibaba)。

MySQL與PG之間的區別

innodb的基於回滾段實現的mvcc機制,相對pg新老資料一起存放的基於xid的mvcc機制,是佔優的。新老資料一起存放,需要定時觸 發vacuum,會帶來多餘的io和資料庫物件加鎖開銷,引起資料庫整體的併發能力下降。而且vacuum清理不及時,還可能會引發資料膨脹。2 mysql採用索引組織表,...

windows 與linux 上面PG的簡單驗證

0.0 目的 驗證一下 windows 上面 和linux上面的資料檔案是否可以 冷備份 恢復.1 方法關閉 windows機器上面postgresql 的服務 我這邊是pg10.4 可以使用命令 net stop postgresql x64 10 net start postgresql x64...

mysql與mysqli的區別

在php5版本以後,增加了mysqli的函式功能,某種意義上講,它是mysql系統函式的增強版,更穩定更高效更安全。mysql與mysqli的區別 1 mysql是非持繼連線函式,mysql每次鏈結都會開啟乙個連線的程序。2 mysqli是永遠連線函式,mysqli多次執行mysqli將使用同一連線...