05 instagram最新版本2022官方正版(ins首頁沒有直播入口2022)

时间:2024-05-15 18:26:47 编辑: 来源:

/p>

MySQL

不支持check約束,可以寫check約束,但存儲引擎會忽略它的作用,因此check約束并不起作用(mariadb 支持)

18. gpu 加速SQL

PGSQL

可以使用gpu 加速SQL的執行速度

MySQL

不支持gpu 加速SQL 的執行速度

19. 數據類型

PGSQL

數據類型豐富,如 ltree,hstore,數組類型,ip類型,text類型,有了text類型不再需要varchar,text類型字段最大存儲1GB

MySQL

數據類型不夠豐富

20. 跨庫查詢

PGSQL

不支持跨庫查詢,這個跟Oracle 12C以前一樣

MySQL

可以跨庫查詢

21. 備份還原

PGSQL

備份還原非常簡單,時點還原操作比SQL Server還要簡單,完整備份+wal歸檔備份(增量)

假如有一個三節點的PGSQL主從集群,可以隨便在其中一個節點做完整備份和wal歸檔備份

MySQL

備份還原相對不太簡單,完整備份+binlog備份(增量)

完整備份需要per買粉絲na的XtraBackup工具做物理備份,MySQL本身不支持物理備份

時點還原操作步驟繁瑣復雜

22. 性能視圖

PGSQL

需要安裝pg_stat_statements插件,pg_stat_statements插件提供了豐富的性能視圖:如:等待事件,系統統計信息等

不好的地方是,安裝插件需要重啟數據庫,并且需要收集性能信息的數據庫需要執行一個命令:create extension pg_stat_statements命令

否則不會收集任何性能信息,比較麻煩

MySQL

自帶PS庫,默認很多功能沒有打開,而且打開PS庫的性能視圖功能對性能有影響(如:內存占用導致OOM bug)

23. 安裝方式

PGSQL

有各個平臺的包rpm包,deb包等等,相比MySQL缺少了二進制包,一般用源碼編譯安裝,安裝時間會長一些,執行命令多一些

MySQL

有各個平臺的包rpm包,deb包等等,源碼編譯安裝、二進制包安裝,一般用二進制包安裝,方便快捷

24. DDL操作

PGSQL

加字段、可變長字段類型長度改大不會鎖表,所有的DDL操作都不需要借助第三方工具,并且跟商業數據庫一樣,DDL操作可以回滾,保證事務一致性

MySQL

由于大部分DDL操作都會鎖表,例如加字段、可變長字段類型長度改大,所以需要借助per買粉絲na-toolkit里面的pt-online-schema-change工具去完成操作

將影響減少到最低,特別是對大表進行DDL操作

DDL操作不能回滾

25. 大版本發布速度

PGSQL

PGSQL每年一個大版本發布,大版本發布的第二年就可以上生產環境,版本迭代速度很快

PGSQL 9.6正式版推出時間:2016年

PGSQL 10 正式版推出時間:2017年

PGSQL 11 正式版推出時間:2018年

PGSQL 12 正式版推出時間:2019年

MySQL

MySQL的大版本發布一般是2年~3年,一般大版本發布后的第二年才可以上生產環境,避免有坑,版本發布速度比較慢

MySQL5.5正式版推出時間:2010年

MySQL5.6正式版推出時間:2013年

MySQL5.7正式版推出時間:2015年

MySQL8.0正式版推出時間:2018年

26. returning語法

PGSQL

支持returning語法,returning clause 支持 DML 返回 Resultset,減少一次 Client <-> DB Server 交互

MySQL

不支持returning語法

27. 內部架構

PGSQL

多進程架構,并發連接數不能太多,跟Oracle一樣,既然跟Oracle一樣,那么很多優化方法也是相通的,例如:開啟大頁內存

MySQL

多線程架構,雖然多線程架構,但是官方有限制連接數,原因是系統的并發度是有限的,線程數太多,反而系統的處理能力下降,隨著連接數上升,反而性能下降

一般同時只能處理200 ~300個數據庫連接

28. 聚集索引

PGSQL

不支持聚集索引,PGSQL本身的MVCC的實現機制所導致

MySQL

支持聚集索引

29. 空閑事務終結功能

PGSQL

通過設置 idle_in_transaction_session_timeout 參數來終止空閑事務,比如:應用代碼中忘記關閉已開啟的事務,PGSQL會自動查殺這種類型的會話事務

MySQL

不支持終止空閑事務功能

30. 應付超大數據量

PGSQL

不能應付超大數據量,由于PGSQL本身的MVCC設計問題,需要垃圾回收,只能期待后面的大版本做優化

MySQL

不能應付超大數據量,MySQL自身架構的問題

31. 分布式演進

PGSQL

HTAP數據庫:買粉絲ckroachDB、騰訊Tbase

分片集群: Postgres-XC、Postgres-XL

MySQL

HTAP數據庫:TiDB

分片集群: 各種各樣的中間件,不一一列舉

32. 數據庫的文件名和命名規律

PGSQL

PGSQL在這方面做的比較不好,DBA不能在操作系統層面(停庫狀態下)看清楚數據庫的文件名和命名規律,文件的數量,文件的大小

一旦操作系統發生文件丟失或硬盤損壞,非常不利于恢復,因為連名字都不知道

PGSQL表數據物理文件的命名/存放規律是: 在一個表空間下面,如果沒有建表空間默認在默認表空間也就是base文件夾下,例如:/data/base/16454/3599

base:默認表空間pg_default所在的物理文件夾

16454:表所在數據庫的oid

3599:就是表對象的oid,當然,一個表的大小超出1GB之后會再生成多個物理文件,還有表的fsm文件和vm文件,所以一個大表實際會有多個物理文件

由于PGSQL的數據文件布局內容太多,大家可以查閱相關資料

當然這也不能全怪PGSQL,作為一個DBA,時刻做好數據庫備份和容災才是正道,做介質恢復一般是萬不得已的情況下才會做

MySQL

數據庫名就是文件夾名,數據庫文件夾下就是表數據文件,但是要注意表名和數據庫名不能有特殊字符或使用中文名,每個表都有對應的frm文件和ibd文件,存儲元數據和表/索引數據,清晰明了,做介質恢復或者表空間傳輸都很方便

33. 權限設計

PGSQL

PGSQL在權限設計這塊是比較坑爹,拋開實例權限和表空間權限,PGSQL的權限層次有點像SQL Server,db=》schema=》object

要說權限,這里要說一下Oracle,用Oracle來類比

在ORACLE 12C之前,實例與數據庫是一對一,也就是說一個實例只能有一個數據庫,不像MySQL和SQL Server一個實例可以有多個數據庫,并且可以隨意跨庫查詢

而PGSQL不能跨庫查詢的原因也是這樣,PGSQL允許建多個數據庫,跟ORACLE類比就是有多個實例(之前說的實例與數據庫是一對一)

一個數據庫相當于一個實例,因為PGSQL允許有多個實例,所以PGSQL單實例不叫一個實例,叫集簇(cluster),集簇這個概念可以查閱PGSQL的相關資料

PGSQL里面一個實例/數據庫下面的schema相當于數據庫,所以這個schema的概念對應MySQL的database

注意點:正因為是一個數據庫相當于一個實例,PGSQL允許有多個實例/數據庫,所以數據庫之間是互相邏輯隔離的,導致的問題是,不能一次對一個PGSQL集簇下面的所有數據庫做操作

必須要逐個逐個數據庫去操作,例如上面說到的安裝pg_stat_statements插件,如果您需要在PGSQL集簇下面的所有數據庫都做性能收集的話,需要逐個數據庫去執行加載命令

又例如跨庫查詢需要dblink插件或fdw插件,兩個數據庫之間做查詢相當于兩個實例之間做查詢,已經跨越了實例了,所以需要dblink插件或fdw插件,所以道理非常簡單

權限操作也是一樣逐個數據庫去操作,還有一個就是PGSQL雖然像SQL Server的權限層次結構db=》schema=》object,但是實際會比SQL Server要復雜一些,還有就是新建的表還要另外授權

在PGSQL里面,角色和用戶是一樣的,對新手用戶來說有時候會傻傻分不清,也不知道怎么去用角色,所以PGSQL在權限設計這一塊確實比較坑爹

MySQL

使用mysql庫下面的5個權限表去做權限映射,簡單清晰,唯一問題是缺少權限角色

user表

db表

host表

tables_priv表

買粉絲lumns_priv表

1. 架構對比

Mysql:多線程

PostgreSql:多進程

多線程架構和多進程架構之間沒有絕對的好壞,例如oracle在unix上是多進程架構,在windows上是多線程架構。

2. 對存儲過程及事務的支持能力

MySql對于無事務的MyISAM表,采用表鎖定,一個長時間運行的查詢很可能會長時間的阻礙,而PostgreSQL不會尊在這種問題。

PostgreSQL支持存儲過程,要比MySql好,具備本地緩存執行計劃的能力。

3. 穩定性及性能

高并發讀寫,負載逼近極限下,PG的性能指標仍可以維持雙曲線甚至對數曲線,到頂峰之后不再下降,而 MySql 明顯出現一個波峰后下滑(5.5版本后Mysql企業版有優化,需要付費)

MySql的InnoDB引擎,可以充分優化利用系統的所有內存,超大內存下PG對內存使用的不那么充分(需要根據內存情況合理分配)。

4. 高可用

InnoDB的基于回滾實現的 MVCC 機制,對于 PG 新老數據一起放的基于 XID 的 MVCC機制,是占優的。新老數據一起存放,需要定時觸發 VACUUM,會帶來多余的 IO 和數據庫對象加鎖開銷,引起數據庫整理的并發能力下降。而且 VACUUM 清理不及時,還可能會引發數據膨脹

5.

搜索关键词: