一篇讓我很生氣的錯誤的 Blog Post
今天我看到了一篇讓我很生氣的錯誤的 Blog post: tidb模擬交易場景事務測試
感覺需要出來實名捍衛一下:
1. 首先這個文章中的測試是樂觀事務模型的資料庫(TiDB)在一個基於悲觀事務模型的命令行客戶端(MySQL client)中進行互動式事務, 出現反直覺問題的場景, TiDB 的行為完全沒有違背 SI, 此處的 SI 的定義來自: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-95-51.pdf
出現文中的反直覺的地方是因為, 後提交的事務, 在 TiDB 內部發生了重試, 在重試的過程中, 第二次的 Update 其實 Affected Rows 其實是 0, 然後這個錯誤的轉賬程序沒有也沒有辦法根據這個返回值判斷是否能夠修改另一個帳號的餘額, 然後強行的 update 了.
2. 最讓我生氣的是, 文章里提到他用 SELECT ... FOR UPDATE 語句測試問題依舊, 但是並沒有給出任何測試語句, 這個完全就是子虛烏有違背事實了. 我們在文檔里寫得很清楚 TiDB 的隔離級別是 SI (因為根據可重複讀的定義有太多不同的實現). 我們自己重新做了測試, 加上了 FOR UPDATE, 完全沒有出現問題. 如果他還堅持, 請給出操作的語句和復現流程.
3.我們從來沒有說, 我們的事務隔離級別的行為和 MySQL 一樣, 但是我們能保證符合隔離級別的正確性, 我們在我們的文檔里已經寫得很清楚了, 很細緻的分析和 MySQL 在我們的 SI 和他們的 RR 之間的區別. 噴人之前先讀讀文檔, 謝謝.
推薦閱讀:
※脫翁筆記(4):香港與中歐班列已然擦身而過│脫苦海
※散文精選:博客上的來往
※外國政要眼中的周恩來—嘯冰.blog的博客—強國博客—人民網
※致訪問我博客的朋友們:你是我今生相遇、相知、相契、相伴、相思、相輝的朋友
※關於男女的經典段子??選自騰雲駕霧的博客
TAG:博客 |