一種透過延遲事務提升資料庫效能的方法
本文分享自天翼雲開發者社群《
一種透過延遲事務提升資料庫效能的方法
》
,
作者:
唐****律
一、 背景
在資料庫代理層中,寫節點的資料庫連線是一種很重要和稀缺的資源,提升其利用率是一個提升資料庫整體效能的重要手段。資料庫連線佔用過高會大幅增加資料庫的資源負擔,降低資料庫的處理能力。透過延遲啟動的事務,可以減少不必要的連線佔用時長,提升資料庫連線利用率。
在使用者透過代理層使用資料庫的時候,如果提交了一條只讀查詢,那麼代理層可以從連線池中獲取一個連線、查詢、獲取資料、然後歸還連線。
如果在只讀查詢之前啟動了事務,那麼在使用者提交或者回滾事務之前,該連線不能歸還到連線池,大大增加了資料庫連線的佔用時間。
而在 ReadCommitted事務隔離級別中,只讀查詢語句的查詢結果是不可重複的,這時如果事務中沒有其它寫操作,那麼是否啟動事務,對於使用者實際使用是沒有影響的,這樣則產生了不必要的事務,增加了資料庫連線佔用的時間,降低了資料庫連線的利用率。
二、 方案
本發明提出一種透過延遲啟動事務的方法,減少不必要的連線佔用時長,提升資料庫連線利用率,進而提升資料庫的整體效能。具體實現步驟如下:
1、在使用者連線未進入事務狀態且在ReadCommitted事務隔離級別時,如果使用者啟動事務,則記錄其事務狀態為已開啟,但實際上不獲取資料庫連線開啟事務。
2、如果使用者提交的SQL為SELECT等只讀查詢,則直接轉發SQL到寫節點或者讀節點。如果使用者提交的SQL需要進行寫操作,則根據事務狀態,在轉發SQL到寫節點之前先啟動事務,並記錄實際事務狀態。
3、使用者提交或者回滾事務,如果實際事務狀態為未開啟,則跳過結束事務操作,否則按正常流程先結束事務再回收資料庫連線。
三、 優點
pgpool-II、pgbouncer等開源連線池元件,支援連線複用,但在事務處理上沒有對此進行最佳化,這導致其在benchmarkSQL測試中效能受到影響,因benchmarkSQL效能測試中針對所有語句都會開啟事務。其它資料庫ORM框架例如Mybatis也有預設啟動事務執行SQL的選項,所以此項最佳化是有必要的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014251/viewspace-2986627/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 效能優化:效能提升 50%,延遲降低 60%MySql優化
- 知名手遊如何通過資料庫即服務降低遊戲延遲FC資料庫遊戲
- 利用Python延遲初始化提升效能Python
- 對線面試官:透過MVCC資料庫事務的一致性面試MVC資料庫
- 網路延遲對事務的影響
- SQL資料庫開發中的SSIS 延遲驗證方法SQL資料庫
- Oracle資料庫密碼延遲驗證Oracle資料庫密碼
- .NET 資料庫事務的各種玩法進化資料庫
- [資料庫]事務的4種隔離級別資料庫
- 資料庫事務的四種隔離級別資料庫
- 優化MySQL資料庫效能的八種方法優化MySql資料庫
- GBase 8s透過信通院集中式事務型資料庫效能專項評測資料庫
- 【Python】透過Cython提升效能Python
- oracle延遲事務無法自動推入處理Oracle
- 透過ADO連線各種資料庫的字串翠集(一) (轉)資料庫字串
- Mysql 從庫如果有未提交的事務主庫ddl操作導致主從延遲MySql
- 巧用閃回查詢來分析事務延遲的問題
- 資料庫系列:事務的4種隔離級別資料庫
- 提升資料庫效能的8點要求資料庫
- 測了一下 透過 DBCA 透過模板 複製資料庫(資料庫架構及資料)資料庫架構
- 資料庫事務的特徵資料庫特徵
- 分散式事務之資料庫事務與JDBC事務實現(一)分散式資料庫JDBC
- EF中延遲載入的那些事
- 資料庫事務併發問題----各種事務隔離下的情況資料庫
- 資料庫事務以及事務的四個特性資料庫
- 透過預熱來最佳化PG資料庫的SQL效能資料庫SQL
- 直播短影片原始碼,延遲任務的解決方法原始碼
- 資料庫效能提升終極指南資料庫
- [20210529]延遲開啟資料庫.txt資料庫
- Redis資料操作長延遲分析Redis
- 資料庫事務整理資料庫
- 針對Oracle資料庫業務使用者延遲密碼登入的處理方法Oracle資料庫密碼
- MongoDB從庫延遲讀取資料問題的解決思路MongoDB
- 透過等待看資料庫資料庫
- 從庫延遲案例分析
- RangeBitmap提升Java流資料過濾效能Java
- MySQL(一):MySQL資料庫事務與鎖MySql資料庫
- 資料庫事務與事務的隔離級別資料庫