欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线

Postgresql和MYSQL如何選擇

這篇文章主要介紹了Postgresql和MySQL如何選擇,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)是專業(yè)的達州網(wǎng)站建設公司,達州接單;提供成都做網(wǎng)站、網(wǎng)站建設,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行達州網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

經(jīng)??吹接腥藢戧P于鎖的事情,但常常感覺給人一個感覺,數(shù)據(jù)庫的ACID 是通過鎖來控制的,實際上數(shù)據(jù)庫的ACID 控制是復雜的,MVCC 就是一個對資源并發(fā)訪問時的提高并發(fā)訪問的有效的方法

在首次定義ACID事務屬性時,假定具有可串行性。為了提供嚴格的可序列化事務結果,使用了2PL(兩階段鎖定)機制。在使用2PL時,每次讀操作都需要一個共享鎖獲取,而寫操作則需要一個獨占鎖。

保持數(shù)據(jù)的完整性,作為一個重要的經(jīng)驗法則,對事務性處理DBs的所有修改都應該在原子事務下進行。而且,每個事務都應該使數(shù)據(jù)庫處于一致的狀態(tài),隔離是最難處理的實踐????。從理論上講,非常簡單,他隔離保證了所有事務的執(zhí)行,即使它們同時運行,也“好像”它們是串行執(zhí)行的。可實踐中,它要復雜得多在保持合理性能的同時保持隔離.

多版本并發(fā)控制(MVCC),會創(chuàng)建行的“先前版本”(“快照”),并將該行的“先前版本”提供給任何可能嘗試并發(fā)運行的其他事務,而不是在有人開始讀取該行時鎖定該行。這是有道理的——畢竟,在提交第一個事務之前,不會考慮更改DB的狀態(tài)。

寫到這,會比較枯燥,下面就開始講點和實際數(shù)據(jù)庫貼邊的 MVCC 實現(xiàn)。

就目前掌握的數(shù)據(jù)庫類型,大致解決MVCC的方式有兩種

1 新的數(shù)據(jù)與舊數(shù)據(jù)分離轉移到一個地方,例如undo log,其他人讀數(shù)據(jù)時,從回滾段中把舊的數(shù)據(jù)讀出來,Oracle和MySQL中的innodb引擎是這樣做的。

2寫新數(shù)據(jù)時,舊數(shù)據(jù)不刪除,而是把新數(shù)據(jù)插入,新舊數(shù)據(jù)在一起。PostgreSQL就是使用的這種實現(xiàn)方法。

那么我們可以對比一下這兩種方式的不同

1  Postgresql 中通過行設計和xact 的方式來解決MVCC的問題, 我們可以通過一個表的查詢 xmin,xmax,cmin,cmax 來查看相關的原理。

Postgresql和MYSQL如何選擇

下面的這段代碼解釋了PG上關于 tuple 設計上的一些原理

typedef struct HeapTupleFields { TransactionId t_xmin;   /* inserting xact ID *

/TransactionId t_xmax;   /* deleting or locking xact ID *

/union{   CommandId t_cid;   /* inserting or deleting command ID, or both *

/   TransactionId t_xvac; /* VACUUM FULL xact ID */}    t_field3; } HeapTupleFields;

  • t_xmin 表現(xiàn)的是產(chǎn)生這個行或更高這行的事務ID

  • t_xmax 表現(xiàn)的是刪除或鎖定這個元組的事務ID

  • t_cid 包含cmin和cmax兩個字段,標識在一個事務里面的這些行的操作順序,例如插入5行,那這5行的插入順序是什么,那些tuple 對那些tuple是可見的,這個是一個事務級的可見性的展示。

  • t_xvac 存儲的是VACUUM FULL 命令的事務ID

當插入一行時,postgres將在該行中存儲XID并將其稱為xmin。已經(jīng)提交的并且xmin小于當前事務的XID的每一行對事務都是可見的。這意味著您可以啟動一個事務并插入一行,而在該事務提交之前,其他事務不會看到該行。一旦提交并創(chuàng)建了其他事務,它們就能夠查看新行,因為它們滿足xmin < XID條件——并且創(chuàng)建該行的事務已經(jīng)完成。

下面我們看看postgresql 表結構,以city表為例

Postgresql和MYSQL如何選擇

一個表中都有的字段 tableoid,cmax,xmax,cmin,xmin

select attname, attnum, atttypid::regtype, attisdropped::text from pg_attribute where attrelid = 'city'::regclass;

我們舉一個例子就能很好的解釋MVCC 的具體操作

我們選擇一個city 表,然后我們開兩個事物,一個更新city_id 1 - 20 另一個事物更新city_id 21 40 

事務1

Postgresql和MYSQL如何選擇

事務2

Postgresql和MYSQL如何選擇

不在事務1 和事務2 中看到的

Postgresql和MYSQL如何選擇

從上面可以總結出

1 每個事務更改操作都會觸發(fā) xmin xmax ,改變 

2 每個事務的更改xmin 只會在自己的事務內部看的到,而xmax 就是別的事務正在更改的信息標記

Postgresql和MYSQL如何選擇

這樣MVCC 的初步功能就可以進行下去了,所以postgresql 沒有頁鎖,只有表鎖和行鎖。

這樣做的優(yōu)點就是事務的回滾非常迅速,但需要經(jīng)常性的 vacuum

反觀MYSQL 的MVCC 采用的是undo log的方式,這和ORACLE 的方式雷同,MVCC 的功能實現(xiàn)并不是在每行中實現(xiàn)的,innodb存儲引擎對undo的管理采用段的方式,rollback segment稱為回滾段,每個回滾段中有1024個undo log segment。(MYSQL 8 已經(jīng)有改變)


使所有回滾段(rsegs)駐留在所選的UNDO表空間中不活動。Inactive意味著這些回滾段不會分配給新的事務。清除系統(tǒng)將繼續(xù)釋放不再需要的回滾段。這將分配給回滾段的頁面標記為空閑,并減少回滾的邏輯大小。

通過上面的一個UNDO 表空間的大概的流程,可以提出幾個問題

1 回滾段是有數(shù)量限制的,回滾段的數(shù)量限制就是這個數(shù)據(jù)庫系統(tǒng)的同一個時間可以執(zhí)行事務的數(shù)量的限制,每個回滾段維護一個頁頭,每個頁面會劃分1024slot 每個slot 會對應一個事務,所以MYSQL 5.7(8.0重新設計了UNDOLOG)另外即使是只讀的事務,只要有對臨時表的寫入,也是分配回滾段的。

例如MYSQL的事務在prepare 階段,insert undo 和 update undo的狀態(tài)為prepare,調用trx_undo_set_state_at_prepare,對對應的undo log slot頭頁面(trx_undo_t::hdr_page_no),將頁面段頭的TRX_UNDO_STATE設置為TRX_UNDO_PREPARED,同時修改其他對應字段。

在commit 階段,Undo狀態(tài)為TRX_UNDO_CACHED,則加入到回滾段的insert_undo_cached鏈表上,或者將該undo所占的segment及其所占用的回滾段的slot全部釋放掉,修改當前回滾段的大小,并釋放undo對象所占的內存,如果是Update_undo操作,則insert_undo不放到History list上。最后事務提交后將回滾段的計數(shù)器減一。

其實就是將事務ID 和 回滾段的指針連接起來,同時MYSQL的行中也有兩個字段來記錄,針對MYSQL 表每一行 都有 6個字節(jié)的 db_trx_id , 7個字節(jié)的 db_roll_ptr ,undo log對于update或者delete操作,每一行都保存了一個事務Id,修改事務Id為當前Session的事務id,生成數(shù)據(jù)行事務之前的版本,將當前行的回滾指針指向事務之前的版本。對于insert操作,將當前行的回滾指針指為空,因為insert沒有事務操作之前的版本。

數(shù)據(jù)庫如果在執(zhí)行事務的過程中想要回滾,必然要考慮并發(fā)和回滾,這就造成隨著并發(fā)和回滾的需求,導致占用更多的磁盤空間,而在事務提交后就需要清理掉這些無用的東西,POSTGRESQL 叫 VACUUM ,MYSQL 叫 Purge ,在InnoDB中,更新后的行的最新版本只保留在表中。舊版本的行在回滾段,而刪除后的行版本則保留在原處,并標記為以后的清理。因此,須從表本身清理標記任何已刪除的行,并從回滾段中清除任何更新后的舊版本的行。查找被刪除的記錄所需的所有信息。

所以從設計結構上來說postgresql 的結構設計要簡單,MYSQL ORACLE 的結構設計要復雜,并且POSTGRESQL 也沒有redo等結構,所以針對POSTGRESQL 最大的問題就是VACUUM , 而MYSQL  INNODB ,則會面對redo ,undo ,purge 等方面的I/O 壓力。

純個人認為,postgresql 在不考慮vacuum 的情況下,性能上的瓶頸要小于MYSQL 方面的復雜結構上產(chǎn)生的影響(可以在非頻繁工作期間進行一些其他的回收方式)。postgresql 在使用中要給出的磁盤空間要有余量,mysql  在這方面上要好一些。

所以單純說那個 better ,沒有什么意義,有意義的是你掌握了多少他們的特性  knowledge

Postgresql和MYSQL如何選擇

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Postgresql和MYSQL如何選擇”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!

本文題目:Postgresql和MYSQL如何選擇
網(wǎng)頁URL:http://www.kartarina.com/article22/jogpjc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站品牌網(wǎng)站制作網(wǎng)站設計、小程序開發(fā)、面包屑導航、云服務器

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管
欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线
91麻豆蜜桃一区二区三区| 欧美tickle裸体挠脚心vk| 国产综合久久久久久鬼色| 成人综合婷婷国产精品久久| 欧美在线制服丝袜| 国产精品久久影院| 久久精品理论片| 欧美日韩精品二区第二页| 亚洲欧洲精品一区二区精品久久久 | 国产欧美日韩精品一区| 日本不卡在线视频| 91精品婷婷国产综合久久性色| 亚洲综合成人在线视频| 成人午夜激情片| 欧美国产一区二区在线观看| 国产成人精品亚洲777人妖| www国产亚洲精品久久麻豆| 狠狠狠色丁香婷婷综合激情| 2014亚洲片线观看视频免费| 国产精品69久久久久水密桃| 日本一区二区成人| 91精品1区2区| 强制捆绑调教一区二区| 日韩你懂的在线观看| 国产一区二区剧情av在线| 国产日韩精品一区二区三区| 成人爱爱电影网址| 亚洲电影一级片| 色综合久久综合中文综合网| 亚洲一区二区三区不卡国产欧美 | 亚洲福利一二三区| 97久久超碰国产精品| 亚洲精品网站在线观看| 欧美日韩精品一区二区三区 | 一区二区三区日韩| 国产欧美久久久精品影院| 日韩一区二区三区在线视频| 日本不卡一二三区黄网| 精品久久99ma| av福利精品导航| 亚洲一区视频在线| 欧美一级片免费看| 成人午夜大片免费观看| 亚洲人快播电影网| 欧美一区日韩一区| 成人教育av在线| 五月天激情综合网| 久久天堂av综合合色蜜桃网| 色综合久久中文字幕| 激情五月婷婷综合| 亚洲黄网站在线观看| 欧美综合色免费| 国产一区二区三区四区在线观看| 中文字幕在线观看一区二区| 666欧美在线视频| 国产.精品.日韩.另类.中文.在线.播放| |精品福利一区二区三区| 91精品国产美女浴室洗澡无遮挡| 丁香天五香天堂综合| 日本不卡123| 国产精品每日更新| 日韩欧美久久一区| 欧美群妇大交群中文字幕| jlzzjlzz欧美大全| 国产美女精品一区二区三区| 日韩成人一级片| 亚洲激情五月婷婷| 亚洲色图一区二区三区| 久久久久九九视频| 欧美成人bangbros| 9191成人精品久久| 欧美高清视频在线高清观看mv色露露十八 | 日韩一区二区三区免费看| 欧美一区二区观看视频| 成人国产精品免费网站| 六月婷婷色综合| 午夜久久福利影院| 一区二区三区四区在线免费观看| 久久免费美女视频| av一区二区不卡| 国产成人一区在线| 激情综合五月天| 久久成人麻豆午夜电影| 日本成人在线不卡视频| 久久久www成人免费毛片麻豆| 在线观看视频一区二区欧美日韩| 中文字幕国产一区二区| 色94色欧美sute亚洲线路一ni| 亚洲区小说区图片区qvod| 亚洲国产精品成人综合 | 国产精品女主播av| 欧美极品aⅴ影院| 国产99久久久国产精品潘金网站| 精品亚洲国内自在自线福利| 国产在线精品视频| 成人听书哪个软件好| 99国产一区二区三精品乱码| 成人激情免费电影网址| 在线观看国产精品网站| 欧美伦理视频网站| 欧美成人综合网站| 国产精品欧美经典| 亚洲一级二级三级| 久久成人av少妇免费| 在线观看视频一区二区| 国产精品午夜在线观看| 狠狠狠色丁香婷婷综合激情| 欧美日韩黄色一区二区| 亚洲国产精品欧美一二99| 国产成人在线网站| 91精品国产综合久久蜜臀| 一区二区在线观看不卡| 成人福利在线看| 2021中文字幕一区亚洲| 男男成人高潮片免费网站| 91久久精品午夜一区二区| 国产精品的网站| 国产宾馆实践打屁股91| 久久综合狠狠综合| 久久国产尿小便嘘嘘尿| 91精品国产aⅴ一区二区| 亚洲午夜久久久久久久久久久 | 这里只有精品免费| 亚洲精品高清视频在线观看| 成人av网站大全| 中文字幕久久午夜不卡| 成人一区二区三区在线观看 | 欧美成人bangbros| 免费看欧美女人艹b| 在线播放亚洲一区| 香蕉成人伊视频在线观看| 欧美日韩在线直播| 亚洲综合色区另类av| 欧美中文字幕一区二区三区亚洲| 最近日韩中文字幕| 91高清视频免费看| 亚洲第一激情av| 欧美精品1区2区| 日本系列欧美系列| 精品三级在线看| 国产成人在线视频网址| 国产精品每日更新| 在线观看亚洲一区| 奇米影视一区二区三区| 精品国产91久久久久久久妲己| 国产麻豆精品95视频| 中文字幕色av一区二区三区| 色屁屁一区二区| 色综合久久六月婷婷中文字幕| 国产精品激情偷乱一区二区∴| 成人在线综合网| 亚洲精品免费在线| 欧美剧情电影在线观看完整版免费励志电影| 26uuu精品一区二区| 欧美成人性福生活免费看| 久久久影视传媒| 国产精品中文欧美| 亚洲四区在线观看| 欧美午夜影院一区| 日韩不卡一区二区| 国产日韩av一区| 欧洲一区在线电影| 久久不见久久见免费视频7| 国产欧美日韩三区| 欧美综合一区二区三区| 久久成人免费电影| 亚洲欧美视频在线观看视频| 欧美一级夜夜爽| 91影视在线播放| 黑人巨大精品欧美一区| 伊人一区二区三区| 久久影院电视剧免费观看| 91久久一区二区| 懂色av一区二区在线播放| 水蜜桃久久夜色精品一区的特点 | 亚洲国产视频a| 精品久久久久久久久久久久久久久| 成人免费看视频| 日日噜噜夜夜狠狠视频欧美人| 国产人成亚洲第一网站在线播放 | 欧美一二三四区在线| 91蝌蚪porny| 亚洲精品美腿丝袜| 国产亚洲精品bt天堂精选| 欧美久久免费观看| 91美女蜜桃在线| 欧美日韩黄色一区二区| 成人97人人超碰人人99| 久久国产精品无码网站| 亚洲免费观看高清完整版在线观看熊| 日韩精品一区二区三区视频| 色噜噜狠狠一区二区三区果冻| 国产成人亚洲综合a∨婷婷| 日韩电影在线观看电影| 一区二区三区av电影| 国产欧美中文在线| 日韩欧美一二三区| 欧洲视频一区二区| 色先锋资源久久综合| 成人高清免费观看|