前腳剛往資料庫插入資料,後腳就查不出來?
前腳剛往資料庫插入資料,後腳就查不出來?
線上出現了一個Bug,前腳剛插入的資料,後腳就查不出來。導致了請求的失敗, 資料庫還可不可信了?
先看看程式碼流程
這是一個很簡單的流程,就是插入了一條資料,然後緊接著select。
insert test (id) values (1);
select test where id=1; => 查出來為空
前腳剛插入,而且採用的是自動提交模式,那麼insert這條就自動提交了。那為何緊接著查不出來呢?這個是在同一個執行緒之內啊,不存在時序混亂的問題。這時候,我們就得看看我們的環境了
部署模式
我們先看一看我們的應用部署模式吧。
我們的應用是通過APP是通過DBProxy去查詢資料庫的。DBProxy可以有效的管理連線,以及一系列的分析/審計/許可權功能,相當好用。
在它們提供的功能裡面,有一項功能引起了我的注意,就是透明主從功能。這個功能的描述為:
推理
按照啟用了這個功能後,我們的sql執行模式應該是這樣insert到主庫而select到從庫。
這時候只要主從稍微有些延遲,那麼select去從庫就找不到資料從而引起問題了!
解決方案
首先,我們讓DBProxy先下掉這個功能,至於主從負載分離,我們採用了另一個方案。
雖然需要修改程式碼,但比起線上出問題好多了。
最後
感謝大家看到這裡,文章有不足,歡迎大家指出;如果你覺得寫得不錯,那就給我一個贊吧。
也歡迎大家關注我的公眾號:程式設計師麥冬,麥冬每天都會分享java相關技術文章或行業資訊,歡迎大家關注和轉發文章!
相關文章
- 資料庫中怎麼取回剛剛插入的記錄?資料庫
- 關於PHP往mysql資料庫中批次插入資料例項教程PHPMySql資料庫
- YII2 一次性往資料庫插入多行資料資料庫
- 資料庫查不出資料:傳參不要加引號資料庫
- 【永春】往Sqlserver插入資料包錯SQLServer
- Python實現http介面請求資料後,往RabbitMQ裡面插入資料PythonHTTPMQ
- 往表中插入大量資料的方法(一)
- mongodb資料庫中插入資料MongoDB資料庫
- 往表中插入大量的資料的方法(二)
- ColdFusion向資料庫插入資料例子資料庫
- 前後端分離開發腳手架後端
- 如何精簡企業主資料“裹腳布”
- proc插入資料到資料庫資料庫
- python如何將資料插入資料庫Python資料庫
- eazyexcel 讀取excel資料插入資料庫Excel資料庫
- 12 可插入資料庫資料庫
- 蹩腳資料科學家的10種現象資料科學
- mybatis插入資料、批量插入資料MyBatis
- python資料插入連線MySQL資料庫PythonMySql資料庫
- sqlite建立本地資料庫並插入資料SQLite資料庫
- SAP HANA Cloud 學習教程之二: 如何往SAP BTP 上 HANA Cloud 資料庫表裡插入資料Cloud資料庫
- MapReduce之----往hbase資料庫寫入資料時, 出現資料異常資料庫
- Vue CLI 3.0腳手架如何在本地配置mock資料VueMock
- 90後資料庫大咖,如何看雲資料庫的未來?資料庫
- 分庫分表插入資料
- python運算元據庫,批量插入資料庫資料Python資料庫
- .NET 資料庫大資料 方案(插入、更新、刪除、查詢 、插入或更新)資料庫大資料
- Laravel前後臺共享資料Laravel
- 插入遠端資料庫資料遇到分割槽表bug資料庫
- 解決hive資料庫 插入資料很慢的問題Hive資料庫
- oracle資料庫插入行更快方法Oracle資料庫
- 插入資料庫亂碼問題資料庫
- Mysql在資料插入後立即獲取插入的IdMySql
- MySQL 資料庫表格建立、資料插入及獲取插入的 ID:Python 教程MySql資料庫Python
- 資料來源連線資料庫資料庫
- laravel實現100w大量資料插入資料庫Laravel資料庫
- .NET 百萬級 大資料插入、更新 ,支援多種資料庫大資料資料庫
- 在ASP.NET中,向資料庫批次插入資料 (轉)ASP.NET資料庫