自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

送給DBA,讓數(shù)據(jù)庫自己解決繁瑣調(diào)參!

數(shù)據(jù)庫 其他數(shù)據(jù)庫
數(shù)據(jù)庫有很多參數(shù),比如MySQL有幾百個參數(shù),Oracle有上千個參數(shù)。這些參數(shù)控制著數(shù)據(jù)庫的方方面面,很大程度的影響了數(shù)據(jù)庫的性能。比如緩存容量和檢查點頻次。

數(shù)據(jù)庫有很多參數(shù),比如MySQL有幾百個參數(shù),Oracle有上千個參數(shù)。這些參數(shù)控制著數(shù)據(jù)庫的方方面面,很大程度的影響了數(shù)據(jù)庫的性能。比如緩存容量和檢查點頻次。

DBA會花大量時間根據(jù)經(jīng)驗來調(diào)優(yōu)數(shù)據(jù)庫的參數(shù),而公司需要花很大的價錢來雇資深的DBA。但是對于不同的硬件配置,不同的工作負載,對應的參數(shù)文件都是不同的。DBA不能簡單的重復使用之前調(diào)好的參數(shù)文件。這些復雜性令數(shù)據(jù)庫調(diào)優(yōu)變得更加困難。

為解決這些問題,卡內(nèi)基梅隆大學數(shù)據(jù)庫小組的教授、學生和研究人員開發(fā)了一個數(shù)據(jù)庫自動調(diào)參工具OtterTune,它能利用機器學習對數(shù)據(jù)庫的參數(shù)文件自動化的調(diào)優(yōu),能利用已有的數(shù)據(jù)訓練機器學習模型,進而自動化的推薦參數(shù)。它能很好的幫助DBA進行數(shù)據(jù)庫調(diào)優(yōu),將DBA從復雜繁瑣的調(diào)參工作中解放出來。

以前網(wǎng)上就有對OtterTune的報道,標題都比較嚇人。比如這篇:運維要失業(yè)了? 機器學習可自動優(yōu)化你的數(shù)據(jù)庫管理系統(tǒng)[1]。

OtterTune的目的是為了幫助DBA,讓數(shù)據(jù)庫部署和調(diào)優(yōu)更加容易,用機器來代替數(shù)據(jù)庫調(diào)參這個冗繁但又很重要的工作,甚至不需要專業(yè)知識也能完成。

OtterTune現(xiàn)在完全開源,Github上的版本就可以使用[2]。這個文檔中有一個步驟較全的例子可以上手,在AWS的m5d.xlarge機子上調(diào)優(yōu)PostgreSQL 9.6數(shù)據(jù)庫,吞吐量從默認參數(shù)文件的每秒約500個事務提高到每秒約1000個事務,有興趣的朋友不妨試一試。

不過驚喜的是,我們發(fā)現(xiàn)這個通用模型在業(yè)界的很多地方都有真實的應用,不僅能調(diào)優(yōu)數(shù)據(jù)庫的參數(shù),還能夠調(diào)優(yōu)操作系統(tǒng)內(nèi)核的參數(shù),甚至可以嘗試調(diào)優(yōu)機器學習模型的參數(shù)。比如以下場景:

  • 某歐洲銀行需要自動化調(diào)優(yōu)數(shù)據(jù)庫集群的參數(shù)以提高性能,減少人工成本。
  • 某大型云廠商需要在不影響性能的前提下盡量調(diào)低分配的資源(如內(nèi)存), 減少硬件成本。
  • 某紐約高頻交易公司需要調(diào)優(yōu)機器的操作系統(tǒng)參數(shù)以優(yōu)化機器性能,減少延遲,從而增加利潤。

本文將介紹OtterTune的內(nèi)部原理,以及OtterTune的一些進展和嘗試,如用深度強化學習來調(diào)優(yōu)數(shù)據(jù)庫參數(shù)。

由于本人水平有限,寫的不對的地方歡迎大家指正。更多資料請參考2017年SIGMOD[3]和2018年VLDB的論文[4]。

一、客戶端和服務端

OtterTune分為客戶端和服務端。目標數(shù)據(jù)庫是用戶需要調(diào)優(yōu)參數(shù)的數(shù)據(jù)庫:

  • OtterTune的客戶端安裝在目標數(shù)據(jù)庫所在機器上,收集目標數(shù)據(jù)庫的統(tǒng)計信息,并上傳到服務端。
  • 服務端一般配置在云上,它收到客戶端的數(shù)據(jù),訓練機器學習模型并推薦參數(shù)文件。

客戶端接到推薦的參數(shù)文件后,配置到目標數(shù)據(jù)庫上,測量其性能。以上步驟可以重復進行直到用戶對OtterTune推薦的參數(shù)文件滿意。

當用戶配置好OtterTune時,它能自動的持續(xù)推薦參數(shù)文件并把所得結(jié)果上傳到服務端可視化出來,而不需要DBA的干預。這樣能很大簡化DBA的工作,比如DBA可以配置好OtterTune后回家睡覺,第二天早上OtterTune可能就在一晚上的嘗試中找到了好的參數(shù)文件。

而OtterTune嘗試的所有參數(shù)文件及對應的數(shù)據(jù)庫性能和統(tǒng)計信息都能在服務端的可視化界面上輕易找到。

上圖是OtterTune的整體架構(gòu):

  • 客戶端中controller由Java實現(xiàn),用JDBC訪問目標數(shù)據(jù)庫來收集其統(tǒng)計信息;driver則用了Python的fabric,主要與服務端交互。
  • 服務端用了Django來構(gòu)建網(wǎng)站,并用Celery來調(diào)度機器學習任務;機器學習則調(diào)了tensorflow和sklearn。

關(guān)于OtterTune架構(gòu)更詳細的內(nèi)容可以參考2018 VLDB的demo paper[4].

二、隨機采樣

為了敘述方便,我們不妨假設參數(shù)文件中有10個重要參數(shù)需要調(diào)優(yōu)。

我們將參數(shù)文件表示為:X=(x1,x2,…x10)

對應的數(shù)據(jù)庫性能為Y。Y可以是吞吐量,延遲時間,也可以是用戶自己定義的測量量。

我們假設目標測量量是延遲時間。則我們需要做的是調(diào)整這10個數(shù)據(jù)庫參數(shù)的值,使得數(shù)據(jù)庫的延遲盡可能少。即找到合適的X,使Y盡可能小。一個好的參數(shù)文件會降低數(shù)據(jù)庫的延遲,即X對應的Y越小,我們說X越好。

最簡單和直觀的方法便是隨機的進行嘗試,即給這10個要調(diào)的參數(shù)較大和較小值,在這范圍內(nèi)隨機地選擇值進行嘗試。顯然這樣隨機的方法并不高效,可能需要試很多次才能得到好的參數(shù)文件。OtterTune也支持這種隨機方法以在沒有訓練數(shù)據(jù)時收集數(shù)據(jù)。

相比隨機采樣,還有一種更有效率的采樣方法叫做拉丁超立方采樣。

比如在0到3之間隨機找3個數(shù),簡單隨機抽樣可能找的三個數(shù)都在0到1之間。而拉丁超立方采樣則在0到1間找一個數(shù),1到2間找一個數(shù),2到3間找一個數(shù),更加分散。

推到高維也是類似的情況。如下圖是二維的情形,x1和x2取值都在0到1之間,用拉丁超立方采樣來取5個樣本點,先將x1和x2分成不同的范圍,再取樣本點使得每一行中只有一個樣本點,每一列中也只有一個樣本點。這樣能避免多個樣本點出現(xiàn)在相近的范圍內(nèi),使其更加分散。

對于OtterTune來說,簡單隨機采樣嘗試的參數(shù)文件可能更集中和相似,而拉丁超立方采樣嘗試的參數(shù)文件更分散和不同。顯然后者能給我們更多的信息,因為嘗試相似的參數(shù)文件很可能得到的數(shù)據(jù)庫性能也相似,信息量少,而嘗試很不同的參數(shù)文件能更快的找到效果好的一個。

三、高斯過程回歸

上述的采樣方法并沒有利用機器學習模型對參數(shù)文件的效果進行預測。

  • 當OtterTune沒有數(shù)據(jù)來訓練模型時,可以利用上述方法收集初始數(shù)據(jù)。
  • 當我們有足夠的數(shù)據(jù)(X,Y)時,OtterTune訓練機器學習模型進行回歸,即估計出函數(shù)f:X→Y,使得對于參數(shù)文件X,用f(X)來估計數(shù)據(jù)庫延遲Y的值。則問題變?yōu)閷ふ液线m的X,使f(X)的值盡量小。這樣我們在f上面做梯度下降即可找出合適的X。

如下圖所示,橫坐標是兩個參數(shù)——緩存大小和日志文件大小,縱坐標是數(shù)據(jù)庫延遲(越低越好):

OtterTune用回歸模型估計出了f,即給定這兩個參數(shù)值,估計出其對應的數(shù)據(jù)庫延遲。接著用梯度下降找到合適的參數(shù)值使延遲盡可能低。

OtterTune用高斯過程回歸來估計上述的函數(shù)f。用高斯回歸的好處之一是它不僅能在給定X時估計對應的Y值,還能估計它的置信區(qū)間。

這能恰當?shù)目坍嬚{(diào)參的情況:對于同樣的參數(shù)文件X, 在數(shù)據(jù)庫上多次跑相同的查詢時,由于誤差緣故,每次得到的數(shù)據(jù)庫性能也可能不一樣。比如同樣的參數(shù)文件和查詢語句,這次執(zhí)行的數(shù)據(jù)庫延遲是1.8秒,下次執(zhí)行的延遲可能是2秒,但每次得到的延遲很大概率是相近的。

高斯過程回歸能估計出均值m(X)和標準差s(X),進而能求出置信區(qū)間。比如上述例子中,通過回歸我們估計其延遲的均值是1.9秒,標準差是0.1秒,則其95%的概率在1.7秒和2.1秒之間。

再來說說探索(exploration)和利用(exploitation):

  • 探索即在數(shù)據(jù)點不多的未知區(qū)域探索新的點。
  • 利用即在數(shù)據(jù)點足夠多的已知區(qū)域利用這些數(shù)據(jù)訓練機器學習模型進行估計,再找出好的點。

比如說我們已知10個數(shù)據(jù)點(X,Y),有9個點的X在0到1之間,有1個點的X在1到2之間。X在0到1之間的數(shù)據(jù)點較多,可以利用這些數(shù)據(jù)點進行回歸來估計f:X->Y,再利用f來找到合適的X使估計的Y值盡量好,這個過程即為利用。

而探索則是嘗試未知區(qū)域新的點,如X在1到2間的點只有一個已知點,信息很少,很難估計f。我們在1到2間選一個X點進行嘗試,雖然可能得到的效果不好,但能增加該區(qū)域內(nèi)的信息量。當該區(qū)域內(nèi)已知點足夠多時便能利用回歸找到好的點了。

OtterTune推薦的過程中,既要探索新的區(qū)域,也要利用已知區(qū)域的數(shù)據(jù)進行推薦。即需要平衡探索和利用,否則可能會陷入局部較優(yōu)而無法找到全局較優(yōu)的點。比如一直利用已知區(qū)域的數(shù)據(jù)來推薦,雖然能找到這個區(qū)域較好的點,但未知區(qū)域可能有效果更好的點未被發(fā)現(xiàn)。

如何很好的平衡探索和利用一直是個復雜的問題,既要求能盡量找到好的點,又要求用盡量少的次數(shù)找到這個點。

而OtterTune采用的高斯過程回歸能很好的解決這個問題。核心思想是當數(shù)據(jù)足夠多時,我們利用這些數(shù)據(jù)推薦;而當缺少數(shù)據(jù)時,我們在點最少的區(qū)域進行探索,探索最未知的區(qū)域能給我們的信息量。

以上利用了高斯過程回歸的特性:它會估計出均值m(X)和標準差s(X),若X周圍的數(shù)據(jù)不多,則它估計的標準差s(X)會偏大,直觀的理解是若數(shù)據(jù)不多,則不確定性會大,體現(xiàn)在標準差偏大。反之,數(shù)據(jù)足夠時,標準差會偏小,因為不確定性減少。

而OtterTune用置信區(qū)間上界Upper Confidence Bound來平衡探索和利用。

不妨假設我們需要找X使Y值盡可能大。則U(X) = m(X) + k*s(X), 其中k > 0是可調(diào)的系數(shù)。我們只要找X使U(X)盡可能大即可。

  • 若U(X)大,則可能m(X)大,也可能s(X)大。
  • 若s(X)大,則說明X周圍數(shù)據(jù)不多,OtterTune在探索未知區(qū)域新的點。
  • 若m(X)大,即估計的Y值均值大, 則OtterTune在利用已知數(shù)據(jù)找到效果好的點。公式中系數(shù)k影響著探索和利用的比例,k越大,越鼓勵探索新的區(qū)域。

四、有數(shù)據(jù)和沒數(shù)據(jù)

OtterTune用來訓練模型的數(shù)據(jù)好壞很大程度上影響了其最終效果。只要有合適的訓練數(shù)據(jù),一般OtterTune前幾次推薦的參數(shù)文件就能得到理想的效果。

而當缺少訓練數(shù)據(jù)(或數(shù)據(jù)集中),甚至沒有任何之前的數(shù)據(jù)時,OtterTune又該如何處理?

當OtterTune沒有任何數(shù)據(jù)時,高斯過程回歸也能有效的在盡量少的次數(shù)內(nèi)找到好的參數(shù)文件。當數(shù)據(jù)少時,OtterTune傾向探索而非利用,而每次探索新的參數(shù)文件時都能盡量的增加信息量,從而減少探索的次數(shù)。

這種方法比隨機采樣和拉丁超立方采樣都要高效。同時OtterTune也可先用拉丁超立方采樣選取少量的一些參數(shù)文件進行嘗試作為初始數(shù)據(jù),之后再用高斯過程回歸進行推薦。

其實在OtterTune之前,有系統(tǒng)iTuned[5]就用高斯過程回歸在沒有數(shù)據(jù)時推薦參數(shù)文件。

而OtterTune的改進是利用之前收集的數(shù)據(jù)進行推薦以大幅度減少嘗試的次數(shù)和等待時間,提高推薦效果。

想想看當OtterTune的一個服務端配置到云上,而多個客戶端進行訪問時,OtterTune會將所有用戶嘗試的參數(shù)文件和對應的性能數(shù)據(jù)存下來進行利用。這意味著用OtterTune的人越多,用的時間越長,它收集的訓練數(shù)據(jù)越多,推薦效果越好。

除此之外,OtterTune還利用Lasso回歸來自動的選取需要調(diào)整的重要參數(shù)。數(shù)據(jù)庫有成百上千的參數(shù),而我們只要調(diào)其中重要的幾個,需要調(diào)整哪些參數(shù)可以根據(jù)DBA的經(jīng)驗,同時OtterTune也利用機器學習將參數(shù)的重要性排序,從而選出最重要的幾個參數(shù)。

另外對于不同的工作負載,對應的參數(shù)文件也不同。如OLTP工作負載通常是很多個簡單的查詢(如insert,delete),而OLAP工作負載通常是幾個復雜查詢(通常有多個表的join)。對于OLAP和OLTP,他們需要調(diào)整的參數(shù)和優(yōu)值都不相同。

OtterTune現(xiàn)在的做法是用一些系統(tǒng)的統(tǒng)計量(如讀/寫的字節(jié)數(shù))來刻畫工作負載,在已有數(shù)據(jù)中找到和用戶工作負載最相似的一個,然后用最相似的工作負載對應的數(shù)據(jù)進行推薦。

五、深度強化學習

在OtterTune的進展中,我們嘗試了深度強化學習的方法來進行數(shù)據(jù)庫調(diào)參,因為我們發(fā)現(xiàn)數(shù)據(jù)庫調(diào)參的過程能很好的刻畫成強化學習的問題。

強化學習問題中有狀態(tài)、動作,以及環(huán)境所給予的反饋。

如下圖所示,整個過程是在當前狀態(tài)(st)和環(huán)境的反饋(rt)下做動作(at),然后環(huán)境會產(chǎn)生下一狀態(tài)(st+1)和反饋(rt+1),再進行下一個動作(at+1)。

數(shù)據(jù)庫調(diào)參過程中,狀態(tài)即是參數(shù)文件,動作即是調(diào)整某個參數(shù)的值,而反饋即是參數(shù)文件下數(shù)據(jù)庫的性能。

所以我們對于當前的參數(shù)文件,調(diào)整某個參數(shù)的值,而得到新的參數(shù)文件,對這個新的參數(shù)文件做測試得到對應的數(shù)據(jù)庫性能,再根據(jù)性能的好壞繼續(xù)調(diào)整參數(shù)的值。

這樣數(shù)據(jù)庫調(diào)參的過程就被很好的刻畫成強化學習的問題,而深度強化學習即是其中的狀態(tài)或動作由神經(jīng)網(wǎng)絡來表示。

我們用了Deep Deterministic Policy Gradient (DDPG)算法,主要是因為DDPG能允許動作可以在連續(xù)的區(qū)間上取值。對于調(diào)參來說,動作即是調(diào)整某個參數(shù)的值,比如調(diào)整內(nèi)存容量,DDPG允許我們嘗試128MB到16GB的任意值,這個區(qū)間是連續(xù)的。

而很多別的算法只允許動作在離散區(qū)間上,比如只允許取幾個值中的一個值。通過實現(xiàn)和優(yōu)化DDPG,最終深度強化學習推薦出的參數(shù)文件與高斯過程回歸推薦出的效果相似。但我們發(fā)現(xiàn)之前的高斯過程回歸(GPR)更有優(yōu)勢,能用更少的時間和次數(shù)找到滿意的參數(shù)文件。

如下圖中所示,我們跑了TPC-H基準中的一條查詢(Query 13),OtterTune一次次的推薦參數(shù)文件直到其達到好的效果(即對應的數(shù)據(jù)庫延遲變低)。

該圖橫坐標是推薦的次數(shù),縱坐標是數(shù)據(jù)庫的延遲,延遲越低越好。藍線是深度強化學習,而黃線代表高斯過程回歸模型。

可見兩個模型最終推薦出的文件效果相似,但高斯過程回歸用了更少的次數(shù)便收斂,推薦出了好的參數(shù)文件。而深度強化學習需要嘗試更多的次數(shù)才能達到類似效果。

我們發(fā)現(xiàn):

  • DDPG算法模型有一些參數(shù)也需要調(diào)整,而這些參數(shù)對效果的影響很大。調(diào)整算法模型的參數(shù)也是個費時費力的過程。這樣就陷入尷尬的局面,OtterTune是用來自動調(diào)整數(shù)據(jù)庫參數(shù)的工具,而OtterTune自己算法模型的參數(shù)也需要調(diào)整。相比而言,GPR的模型參數(shù)可以自動的進行調(diào)整,從而實現(xiàn)OtterTune真正的自動化。
  • GPR能用Upper Confidence Bound更好的平衡探索(exploration)和利用(exploitation),相比DDPG更加高效。 這在沒有或缺少數(shù)據(jù)的情況下,GPR能用更少的次數(shù)找到好的參數(shù)文件。
  • DDPG是更加復雜的模型,其中還有神經(jīng)網(wǎng)絡,可解釋性差。需要更多的數(shù)據(jù)和更長的時間來訓練和收斂。雖然能達到和GPR一樣的推薦效果,但往往需要更多的次數(shù)和更長的時間,意味著用戶需要等更久才能得到滿意的參數(shù)文件。

六、展望

對于數(shù)據(jù)庫來說,有很多部分都能嘗試與機器學習結(jié)合。比如預測數(shù)據(jù)庫一段時間的工作負載,如通過挖掘數(shù)據(jù)庫的日志來做自動預警,再到更核心的部分,如學習數(shù)據(jù)庫索引,甚至幫助優(yōu)化器做查詢優(yōu)化。

OtterTune專注的參數(shù)文件調(diào)優(yōu)只是其中的一部分。由于OtterTune和數(shù)據(jù)庫的交互只是一個參數(shù)文件,這使得該工具更加通用,理論上能適用于所有的數(shù)據(jù)庫。

當要調(diào)參一個新的數(shù)據(jù)庫時,我們只需要給OtterTune該數(shù)據(jù)庫的一些參數(shù)和統(tǒng)計量信息即可,不需要去改動這個數(shù)據(jù)庫的任何代碼。

再者,OtterTune的通用框架也可以用于其他系統(tǒng)的調(diào)參,如我們嘗試用OtterTune來調(diào)優(yōu)操作系統(tǒng)的內(nèi)核參數(shù)也取得了不錯的效果。

現(xiàn)在的OtterTune仍有要改進的地方:

  • 比如假定了硬件配置需要一樣,而我們希望OtterTune能利用在不同的硬件配置上的數(shù)據(jù)來訓練模型進行推薦。
  • 再比如現(xiàn)在OtterTune每次只推薦一個文件,當有多個相同機器時,我們希望一次推薦多個文件并行的去嘗試,這樣能加快推薦速度。

另外還可以嘗試與其他部分的機器學習方法結(jié)合,比如可以先用機器學習方法預測工作負載,再根據(jù)預測的工作負載提前調(diào)優(yōu)參數(shù)文件。

用機器學習來優(yōu)化系統(tǒng)是最近很火很前沿的一個話題,無論是在工業(yè)界還是在學術(shù)界。

全球數(shù)據(jù)庫廠商Oracle如今的賣點便是autonomous database[6] ,即自適應性數(shù)據(jù)庫,利用機器學習來自動優(yōu)化數(shù)據(jù)庫來減少DBA的干預,要知道在美國雇一個資深的DBA是多么困難的一件事。Oracle投入大量的專家和資金來做這件事便證明了它的工業(yè)價值。

學術(shù)上,一些ML和系統(tǒng)的大佬在前兩年開了一個新的會議叫SysML[7],專注于機器學習和系統(tǒng)的交叉領(lǐng)域。更不用說越來越多的相關(guān)論文,比如卡內(nèi)基梅隆大學的OtterTune,再如MIT和谷歌開發(fā)的用神經(jīng)網(wǎng)絡學習數(shù)據(jù)庫的索引[8]。

以谷歌Jeff Dean在演講中的話結(jié)尾:

計算機系統(tǒng)中充滿了經(jīng)驗性的規(guī)則,到處是在用啟發(fā)式的方法來做決定,而用機器學習來學系統(tǒng)的核心部分會讓其變得更好更加自適應,這個領(lǐng)域充滿著機會[9]。

參考

[1]運維要失業(yè)了? 機器學習可自動優(yōu)化你的數(shù)據(jù)庫管理系統(tǒng)

www.sohu.com/a/146016004_465914

[2]https://github.com/cmu-db/ottertune

[3]Automatic Database Management System Tuning Through Large-scale Machine Learning. Dana Van Aken, Andrew Pavlo, Geoffrey J. Gordon, Bohan Zhang. SIGMOD 2017

[4]A Demonstration of the OtterTune Automatic Database Management System Tuning Service. Bohan Zhang, Dana Van Aken, Justin Wang, Tao Dai, Shuli Jiang, Siyuan Sheng, Andrew Pavlo, Geoffrey J. Gordon. VLDB 2018

[5]Tuning Database Configuration Parameters with iTuned. Songyun Duan, Vamsidhar Thummala, Shivnath Babu. VLDB 2009

[6]https://www.oracle.com/database/what-is-autonomous-database.html

[7]https://www.sysml.cc/

[8]The Case for Learned Index Structures. Tim Kraska, Alex Beutel, Ed H. Chi, Jeffrey Dean, Neoklis Polyzotis. SIGMOD 2018

[9]http://learningsys.org/nips17/assets/slides/dean-nips17.pdf

 

責任編輯:武曉燕 來源: DBAplus社群
相關(guān)推薦

2024-03-11 06:00:00

OptunaPython超參數(shù)優(yōu)化

2024-11-12 10:22:52

2011-08-17 15:29:00

2019-07-17 17:00:29

數(shù)據(jù)庫數(shù)據(jù)庫管理員DBA

2011-07-07 09:11:54

NoSQL數(shù)據(jù)庫

2011-04-01 15:07:29

數(shù)據(jù)庫自動化

2011-04-18 13:46:24

數(shù)據(jù)庫設計

2011-07-08 16:02:54

HBase

2011-05-26 15:20:46

Oracle數(shù)據(jù)庫導出

2013-11-26 09:47:47

ORM

2011-02-25 15:31:19

MySQL數(shù)據(jù)庫DBA

2010-05-06 10:39:06

ibmdwDB2

2010-11-30 11:26:49

2009-10-12 10:05:33

數(shù)據(jù)庫機DBA

2009-11-19 11:32:16

DBA數(shù)據(jù)庫安全補丁

2011-01-20 08:35:23

SQL Server

2010-04-27 13:49:04

Oracle數(shù)據(jù)庫

2012-05-16 16:25:57

國產(chǎn)數(shù)據(jù)庫

2023-04-03 10:25:00

數(shù)據(jù)庫性能調(diào)優(yōu)
點贊
收藏

51CTO技術(shù)棧公眾號