成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

對國產數據庫廠商提幾個關于SQL引擎的小需求

數據庫 SQL Server
國產數據庫迎來了一個高速發展的好時期,大量的企業用戶正在將他們的數據庫系統遷移到開源和國產數據庫平臺上。不過我們的國產數據庫廠商在大量收割用戶和“數鈔票”的時候,廣大的用戶也在期盼著國產數據庫變得更好用。

國產數據庫迎來了一個高速發展的好時期,大量的企業用戶正在將他們的數據庫系統遷移到開源和國產數據庫平臺上。不過我們的國產數據庫廠商在大量收割用戶和“數鈔票”的時候,廣大的用戶也在期盼著國產數據庫變得更好用。SQL引擎是數據庫最為核心的組件之一,因此大量國產數據庫廠商在內卷競爭的時候,也需要能夠做出一些讓廣大用戶滿意的功能來。

我們團隊常年從事系統優化和數據庫運維工具開發,這些年也接觸了大量的用戶,遇到過大量的數據庫的坑,其中大部分是和SQL引擎有關的。因此今天我也代表廣大的用戶,給國產數據庫提出一些關于SQL引擎方面的功能需求。希望在新一個版本的國產數據庫中,能夠看到這些功能被逐步實現了。

如果最希望國產數據庫SQL引擎具有的功能就是全功能的HASH JOIN,大家都知道HASH JOIN是解決大數據量的表關聯問題的最有效的連接方式。Oracle的HASH JOIN很強大,大量復雜的連接條件,都可以通過HASH JOIN來擺平。雖然現在很多開源、國產數據庫都支持HASH JOIN,不過對HASH JOIN的支持上依然存在很多的盲點。如果遇到某些情況下,正好HASH JOIN無法使用,那么這條SQL就只剩下改寫一條路了,這對于開發人員和DBA來說就是災難。

第二個需求是SQL指紋和執行計劃指紋。SQL指紋和SQL ID不完全是一回事,SQL ID只能指向一條唯一的SQL語句,而SQL指紋可以將一組存在略微差異的SQL語句歸類為一種SQL。比如我們有一條SQL,除了某些大小寫不同,其他是相同的,或者只有某個變量不同,其他是相同的,那么這些不同的SQL應該是同一條SQL,雖然這些SQL的SQL ID可能不同,不過這些SQL具有相同的指紋信息。通過這些指紋可以找到這類相同的SQL,進行統一的分析。執行計劃指紋是指完全相同的執行計劃,有可能不同SQL ID的SQL會使用相同的執行計劃,在SQL中會有一個執行計劃指紋的標識,指向這個執行計劃。通過“執行計劃指紋”,我們可以減少保存在內存中的執行計劃數量,不管是否實現了全局執行計劃,都可以將執行計劃存儲在一個共享內存區域中,供監控分析人員使用。類似的SQL指紋與執行計劃指紋的功能實際上在Oracle數據庫中大多數已經實現了,有興趣的朋友可以去研究一下。

第三個需求是HINT,優化器的提升是相當困難的,需要大量的資金投入和時間的沉淀才可以做得越來越好,絕對無法依靠某幾個聰明的高手就可以完成。如果遇到了CBO優化器真的無法做出正確判斷,非要使用錯誤的執行計劃的時候,開發人員還是可以通過HINT來強制矯正執行計劃的。目前也有一些國產數據庫和開源數據庫支持hint了。不過在實現方法上,很多國產和開源數據庫是通過外掛方式,利用數據庫代碼中的鉤子來實現的,另外HINT支持的操作也還不是很完整。通過鉤子的插件實現方式還是沒有原生態的內核支持效率更高,在內核中直接支持豐富的HINT絕對是提升國產數據庫SQL解析效率的必然途徑。在HINT支持的操作方面,HINT不僅僅可以強制指定某種執行方案,還可以實現集群計算環境中的強讀寫分離、弱讀寫分離等功能。比如設定集群計算環境中MASTER選擇的策略,以及指明某操作可以放置于只讀節點,甚至指明某個操作是弱一致性操作,運行數據延時的最大限制等。這些HINT往往需要集群計算環境被納入到數據庫的內核中,而不僅僅是外掛的。

第四個需求是OUTLINES的原生態支持,當我們無法直接修改SQL,添加HINT來強制指定一個比較優化的執行計劃的時候,就只能依靠OUTLINES了。傳統的OUTLINES只能針對某個SQL ID,如果存在一些沒有使用綁定變量的情況,就沒辦法通過SQL ID來指定OUTLINES。而往往一個系統中,這些SQL才是最常用的,也是最重要的。在OUTLINES的實現上,如果可以通過SQL指紋來設定,那么OUTLINES將會有更廣泛的用途。

第五個需求是長時間運行的SQL執行進度可視化,提供一個類似于Oracle V$SESSION_LONGOPS的外部接口視圖。不過希望能夠比Oracle提供更多一些的信息。比如當前這個操作來自于哪個執行計劃(執行計劃指紋),以及這個操作處于執行計劃的第幾個步驟。當然這種SQL執行進度可視化僅僅顯示長時間執行的操作,只有當執行計劃中的某個算子執行成本超過一定閾值的時候,才需要輸出到接口中,否則這種輸出會影響SQL引擎的效率。這部分功能實現只要到某個算子級別就可以了,不需要做SQL級別的,SQL引擎還是性能為先,可視化是次要的。

其實SQL引擎中的優化器是改進難度最大的部件,需要有大量的應用案例來促進其優化和改進。而且有些優化器的功能優化難度極大,要做出一個優秀的CBO優化器其實不是一朝一夕就能夠完成的。不過在優化器達到完美之前,必須是夠用的。也就是能夠盡可能讓我們的開發人員不要總是面臨SQL不改寫就無法正常運行的困境。用戶的應用場景十分復雜,因此作為國產數據庫的開發者,集中力量去解決必須解決的問題,剩下的問題通過HINT,OUTLINES這樣似乎不是太智能化的手段來彌補優化器的能力不足,也是必須的。不管怎么說,能夠解決用戶問題的數據庫就是好數據庫。

責任編輯:華軒 來源: 今日頭條
相關推薦

2011-03-29 13:33:26

2022-11-17 08:25:47

2020-06-23 16:26:07

新基建

2011-03-11 09:14:18

國產數據庫

2011-03-11 09:26:13

2010-05-31 17:15:39

MySQL數據庫

2009-03-19 09:30:59

2010-06-28 14:56:24

優化SQL Serve

2011-11-04 14:07:40

存儲

2025-03-11 07:31:04

2011-03-02 17:56:40

DB2數據庫

2009-05-22 09:25:00

SQL Server版本SQL Server

2013-11-08 00:45:40

國產數據庫

2011-05-24 10:46:21

國產數據庫安全

2024-07-16 08:22:09

2025-02-18 07:30:35

2023-07-04 08:09:05

數據庫選型集中式

2010-07-21 14:04:12

SQL Server引

2010-05-10 09:48:16

SQL Server數

2010-06-30 14:24:08

SQL Server數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜在线 | 欧美亚洲免费 | 中文字幕一级 | 亚洲精品成人免费 | 国产精品不卡 | 欧美日韩国产高清 | 日韩免费一级 | 久久久www| 久久大 | 欧美99| 亚洲欧洲在线观看视频 | 日日夜夜精品视频 | 一级免费毛片 | 亚洲欧美中文日韩在线v日本 | 成人三级av| 婷婷福利视频导航 | 成人精品一区二区三区 | 国产高清在线 | 日韩欧美成人精品 | 91黄色片免费看 | 免费毛片网 | 国产精品欧美一区二区三区不卡 | 三级黄色片在线观看 | 欧美久久一级特黄毛片 | 超碰免费在线 | 午夜免费影视 | 国产美女黄色片 | 国产精品成人av | 成人午夜激情 | 国产高清自拍视频在线观看 | 麻豆av在线 | 国产高清精品一区二区三区 | 天堂在线91 | 亚洲欧美一区二区三区国产精品 | 国产美女精品视频免费观看 | 亚洲久草| caoporn免费在线视频 | 亚洲精品欧美 | 欧美一区二区三区在线观看 | 久久99精品国产自在现线小黄鸭 | 亚洲精品乱码久久久久v最新版 |