主頁 > 資料庫 > 基于圖深度學習的自然語言處理方法和應用

基于圖深度學習的自然語言處理方法和應用

2022-05-02 08:00:20 資料庫

file


導讀: 本次分享的內容為圖深度學習在自然語言處理領域的方法與應用,主要內容和素材都來自于我們Graph4NLP團隊的一篇調研文章:Graph Neural Networks for Natural Language Processing:A Survery,以及我們團隊所開發的Graph4NLP的python開源庫和教程,主要包括以下幾大方面內容:

  • DLG4NLP背景與發展
  • DLG4NLP方法和模型
  • DLG4NLP典型的應用
  • DLG4NLP Python開源庫

--

01 DLG4NLP背景與發展

我將首先闡述一下為什么需要圖結構來處理NLP任務,然后介紹一下傳統的圖方法在NLP里面的應用,最后引出圖神經網路并且簡單介紹圖深度學習的基礎理論,

1. 為什么需要圖來處理NLP任務

file

我們知道圖結構資料是由節點和邊組成的資料型別,在生活的方方面面都可以看到,尤其在大資料時代,比如互聯網、社交網路、金融的交易網,還有可以表示成圖結構的蛋白質等化學物質,我們也可以用圖結構來表示邏輯關系的程式腳本,從影像領域來看,有表示影像里物體間相互互動關系的圖結構,

file

同樣在NLP的領域里,我們也會發現很多很多可以表示為圖結構的資料,比如針對一個句子,如果我們想表示這個句子里的句法資訊的話,可以建立一個dependency graph或者constituency graph;如果我們想捕捉句子的語意資訊的話,可以建立一個AMR graph或者IE graph;如果我們把程式語言也看作一種自然語言的話,我們可以構建出捕捉程式邏輯關系的SQL graph,

2. 傳統圖方法在NLP任務的應用

file

傳統NLP領域的表征方法一般分為3種:

第一種采用詞袋來表征文本,該方法依靠統計每個詞在句子或檔案里的頻率,但是這種方式無法捕捉詞語之間順序或者無法捕捉詞語之間的語意資訊,

第二種把文本表示成序列,相對于詞袋會捕捉更多的序列資訊,并且會包含詞對之間的前后關系,典型方法有Word2vec和Glove,

第三種把文本表示成圖,比較常見的有dependency graph和constituency graph等,當我們把一個文本表示成圖后,就不再局限于前后位置的序列關系,我們可以捕捉到任意兩個位置之間的關系,除了位置關系、語法關系,我們還可以捕捉語意關系,所以當我們對句子的文本表示越徹底越全面時,對表征學習任務幫助越大,

file

現在把自然語言表示成圖結構已經不是一件新鮮事情,早在深度學習之前就有演算法去這么做,例如采用Random Walk演算法和Graph Matching演算法計算文本之間的相似性,雖然傳統方法表征成了圖結構,但是對語言的處理具有比較大的局限性,

其一是沒有后續特征的提取環節,其二解決的任務比較有限,比如句子生成,詞與句子分類,尤其對于預處理模型同時求多個任務時,需要應用圖深度學習來解決圖特征提取環節,

3. 圖深度學習基礎理論

file

圖神經網路的核心思想是依靠鄰居節點的表征向量對目標節點的影響,不斷地更新和學習每個節點的隱式表征,不同的圖神經網路之間的差異在于所定義的鄰居節點對目標節點的影響方式和資訊傳遞的方式不同,圖神經網路既可以計算節點的表征向量node embedding,也可以計算整個圖的表征向量graph-level embedding,通過圖卷積方式計算節點的表征向量的不同,圖卷積有四個比較典型的代表:Spectral-based,Spatial-based,Attention-based,Recurrent-based,該四個型別并不相互排斥,一種圖卷積方法既可以是Spatial-based也可以是Attention-based,

file

我們介紹下基本的圖卷積操作,

第一個公式為圖卷積運算,它的輸入為A鄰接矩陣和H node embedding(節點表征);對于節點分類和鄰接預測的任務,得到節點的表征向量即可,對于圖分類和圖的生成任務,需要采用pooling(池化操作)對整個圖做表征向量,常見的方法有Flat Graph Pooling(求平均、最大、最小值pooling方式);另外一種是Hierarchical Graph Pooling(Diff pool方式),根據圖結構把整個node embedding聚合到一起組成一個graph embedding network,

file

根據不同的圖卷積方式和pooling(池化)層,我們可以得到不同的圖神經網路模型,比如GCN,GAT等,

--

02 DLG4NLP方法和模型

下面我們進入第二部分,即如何用圖神經網路去解決自然語言處理的任務,這一環節我會從三個方面進行介紹,首先是如何去構造自然語言任務里的圖結構,其次是如何在圖結構基礎上進行表征學習,最后講兩個比較典型的圖神經網路構架,

1. 如何構造NLP的圖結構

file

自然語言里對文本的圖構造可以分為兩類:

  • 靜態圖構造
  • 動態圖構造

file

靜態圖構造的輸入可以為原始的句子、段落或者檔案,輸出是我們針對輸入所構造出的圖結構,靜態圖可以在預處理階段完成,但是它需要有一些對句子或檔案文本的領域資訊,比如一些語法資訊、語意資訊、邏輯資訊和主題資訊,根據領域資訊對句子或者文本構造一個圖,

file

根據不同的資訊或者文本,靜態圖可以進一步細分,

首先是Dependence Graph,該圖結構依賴于dependence parsing,可以用來捕捉句子的句法資訊,它更注重兩個詞之間的句法關系,所以該圖結構是一個比較簡潔的構圖表示,如果我們想用圖表示整個檔案的話,我們可以結合連續邊的資訊來表示檔案中句子之間的前后關系,

file

相對Dependence Graph,Constituency Graph展現的是句子的句法資訊,更注重整個句子的結構,而不是局限于句子中兩個詞之間的句法關系,所以它更全面地展示了整個句子的結構性,

file

file

其次介紹AMR Graph和IE Graph,它們都是用來捕捉句子的語意資訊,更注重兩個詞之間語意關系,比如IE Graph例子里面Paul是個人名,然后Seattle是個地名,所以我們首先需要表示它們倆屬于物體,同時也需要知道兩個物體之間的關系是一種grew up in的語意關系,根據物體關系,可以構造出IE Graph作為最終的構圖,

file

除了之前幾種構造圖外,還有Co-occurrence Graph,它是通過統計兩個詞同時出現的次數,得到Co-occurrence矩陣,然后將矩陣作為構圖的鄰接矩陣,

file

總結以上例子,靜態圖構建是需要額外的領域資訊來增強句子本身的資訊組成的圖結構,常用的資訊有句法資訊、語意資訊、主題邏輯資訊、co-occurrence資訊,甚至基于應用的資訊,所以根據不同的領域資訊,可以構造出不同的靜態圖結構,

file

下面介紹另外一種構圖方式即動態構圖,動態圖構造不需要有額外的領域知識去指導如何構圖,該方法直接把文本丟給機器,讓機器自己去學習圖結構,

例如有若干個表示為word或者句子的未知關系節點,首先通過圖相似矩陣學習的方式去構造一個全連接圖,然后對其做稀疏化操作得到稀疏圖,然后進行圖表征學習,

file

動態圖構建中最重要的一個步驟是相似矩陣學習,其核心是計算任意兩個節點特征向量相似度,首先需要設定一個相似的kernel去定義這兩個embedding的相似度,兩種典型的做法:一個是Node Embedding Based方法,第二個是Structure-aware方法,下面分別介紹這兩種方法,

file

Node Embedding Based方法依靠兩個節點的表征向量(embedding),先計算兩個節點embedding的相似度,然后把相似度作為加權的鄰接矩陣里面的值,特征向量計算相似度的方式也分兩種,一個是attention based,一個是cosine based,

file

Attention-based的方式在計算相似度時,會有可學習的引數來幫助計算每對節點對之間的attention,它其實有兩種方式來計算attention:

第一種是假設對所有的節點都共享可學習的引數,可學習引數是一個向量,

第二種方式是每一對節點都有自己的可學習的引數,這里可學習的引數是一個矩陣了,矩陣里面N代表節點的數量,

file

Cosine-based方法是先把節點的表征向量都乘以一個可學習的引數矩陣,相當于將其投影到另一個新的空間,再計算新空間下兩個表征向量之間的cosine值,如果想讓函式更加具有張力,可以借鑒多頭機制(multi-head)設定多個投影空間,即學多個引數,對于每一個頭引數都會有一個cosine值,然后把所有的cosine求平均,即為最終的cosine值,

file

在計算相似度時有時不僅要考慮node embedding,還要考慮圖本身的結構,可以用structure-aware相似矩陣來學習本身的初始結構,但該結構不確定對下游任務的影響,但是可以先用起來,然后去算structure-aware相似度,

file

structure-aware相似矩陣計算其相似度也有兩種方式,計算相似度時都將邊界的embedding算進去,

file

下面對動態圖和靜態圖的構造做一個總結:

a) 靜態圖的優點可以依靠認為構造去捕捉一些先驗目標知識,其缺點是人為構造會產生噪聲,同時無法確定構建的圖結構對下游任務是否有所幫助,當我們確定所掌握的領域知識是跟下游任務是匹配時,可以應用靜態圖結構,

b) 動態圖的優點是比較簡便,不需要額外的領域知識直接讓機器去學最優的圖結構,其圖結構和圖表征的學習程序可以相互促進,缺點是圖結構的可解釋性幾乎為零,不太能解釋兩個節點之間的關系和代表的含義,第二個缺點是由于是全連接的圖導致穩定性很差,當缺少一些領域知識或者不確定用什么圖去解決下游任務時,可以選擇動態圖構建來幫我們去學最優的圖結構,下面介紹如何做表征學習,

2. 如何做NLP的圖表征學習

file

圖表征學習分為三種,為Homogeneous Graph、Multi-relational Graph和Heterogenous graph,Homogeneous Graph只有一種節點型別以及一種邊型別,Multi-relational Graph是一種節點型別以及多種邊型別,Heterogenousgraph則是多種節點型別和多種邊型別,

下面分別介紹這三種不同的圖表征學習,

file

Homogeneous Graph的神經網路比較簡單,構建來源有兩種,一種是本身圖結構就是homogeneous,第二種是通過轉換操作,把non-homogeneous graph轉化成一個homogeneous graph,

file

接下來舉例子介紹,如何把不適合的non-homogeneous graph轉化成homogeneous graph,左邊圖結構是一個AMR graph,有多種不同的關系,把每個關系的ARG值當成一個節點,這樣就可以把它轉化成了只有一種ARG值的graph,如果將節點看作同等對,其就是一個homogeneous graph,

file

還有一個比較關鍵的問題,在構圖中會經常遇到連接的邊具有方向性,邊的方向性在表示兩個節點關系上是非常重要的,比如說在處理序列時,BiLSTM結構之所以效果很好,其實也是考慮到這種方向性,所以在圖結構上也要考慮這個方向性,目前處理方向有三個選擇:

第一個是在資訊傳遞時,只讓資訊沿著方向傳播,例如a中的紅色節點跟四個節點連接,但是因為讓資訊只沿著節點的箭頭方向傳播,所以它只受三個鄰居節點的影響,

第二個是把edge的兩個方向當成兩個edge種類,產生一個多關系的graph,

第三個是設計Bidirectional GNNs,直接用這種特殊的圖神經網路去解決問題,

file

下面詳細介紹特殊的Bidirectional GNNs,該圖神經網路分兩個型別:

第一種型別是對每一個方向都會搭建兩個獨立的卷積網路,分別學習embedding,到最后一層時,再把兩個方向得到的節點表征連接到一起得到最終的表征,

另外一種型別不同之處在于,雖然有兩個不同方向的卷積網路,但在每一層卷積之后都會把學到的節點表征合到一起,把新的節點表征去分別送到下一層兩個方向的卷積,

file

接下來介紹Multi-relation GNNs,其方法分為三類:

第一種是引入不同的與type相關的可訓練卷積引數,

第二種直接引入edge embeddings,來表示不同的關系,

第三種利用專門的Multi-Relation Graph Transformer,

file

下面是處理Multi-relation的方法,

第一種方法是對每一個關系學一個卷積核,相比于傳統的GNN,R-GGN有一個引數θ,對每個type都會學一個θ,每一個關系都會得到節點表征,然后把得到的節點表征做一個加和,

file

第二種直接引入邊的表征向量,其核心是在做message傳播時,把邊的表征向量加進來可以捕捉不同邊的種類,引入邊表征向量有兩種方式,一種是邊表征向量從頭到尾是固定不變的,另外一種是邊的表征向量像節點一樣,在傳播中不斷地更新迭代,

file

eterogeneousGraph在NLP領域里面更多用的是基于meta-path的GNNs,詳細介紹可以看ACL2020的文章,

3. NLP任務重的圖編碼解碼模型

file

在經典的NLP任務里面,seq2seq的架構相對比較流行,比如自然語言翻譯這種實際問題,但是這種結構只能處理序列轉換,無法解決圖結構,所以為了把圖結構引入整個NLP任務,需要采用Graph2Seq的結構,

file

目前有兩個比較主流的結構,第一個是由encoder-decoder組成,其encoder是基于GNN神經網路組成,將圖作為輸入圖的embedding,然后decoder選擇為NLP里針對不同下游任務所使用的語言生成器,

file

第二種結構是graph-to-Tree Model,輸出不只是需要sequence,我們還需要更詳細的圖結構文本,比如程式語言的生成,需要把它表示成為tree的結構模型來解決任務,

--

03 DLG4NLP典型的應用

接下來介紹Graph NLP里面主要模型和方法的兩個典型應用,

file

一種廣泛的應用是文本問題生成,即根據輸入的答案,生成對應的問題,該應用可以看成一個生成問題,目的是希望decoder學到一個基于條件的分布,

file

在ICLR220的這篇文章中,它是利用Graph2Seq的結構去解決生成問題,把輸入表示成一個圖結構,用BiGGNN去學習節點表征,再配上RNN decoder做最后的問題生成,

file

另外一篇文章是總結概要的應用,它的目的就是把整個比較大的文章輸入進去,得到一個短摘要,該文章收錄在ICLR2021的summary session中,

--

04 DLG4NLP Python開源庫

最后介紹一下我們團隊開發的開源python庫Graph4NLP,

file

首先我們開源庫基于pytorch、DGL和CoreNLP開發,并且提供了Huggingface介面,進而可以使用bert之類的模型,

file

下面是對開源庫功能函式的概覽,其核心的module包含了Graph Construction即靜態圖構建和動態圖構建,還有其下游的任務,比如分類任務和生成任務,另外還包括一些比較典型的圖神經網路GCN和GraphSAGE等,我們還用python庫去實作了一些比較經典文章里的一些模型,并且取得了不錯的效果,

file

接下來展示下python庫如何做完成NLP任務,

流程為首先做一個圖構建,將圖結構輸進去,用python庫的Graph Data產生Data資料型別,然后用GNN圖學習模塊優化該圖,或者進行圖的表征學習,最后可以根據具體的任務去選擇下游的模塊,或者做分類、生成任務等,

file

這個表格展示了python庫在不同NLP任務上取得的不錯結果,如果大家想探索圖深度學習在NLP應用的話,請關注和嘗試該library,歡迎大家多提寶貴的意見,因為我們還在不斷的去更新我們的開源庫,今天就是我分享的全部內容,謝謝大家的關注,

--

05 精彩問答

Q1:現在像知識圖譜的圖表示學習的演算法多嗎?

A:目前邊的網路更多的是生成homogeneous graph, Heterogeneous graph也有一兩篇文章,

Q2:Bert加圖學習訓練不起來怎么辦?

A:有可能是構建圖結構有問題,或者調參沒調好,可以試下上面講的開源python庫,先去做一個嘗試,然后對照排查問題,

Q3:最近transformer相對比較火,在用于NLP文本建模時用全連接的圖來進行建模,如果找一些比較稀疏的有語意的圖,也可以取得非常好的結果,您覺得有沒有可能把這兩種方法結合起來,同時利用全連接的圖和語意的圖?

A:我覺得transformer本身就是一種GNN形式,只不過它學的是個全連接圖,它有點類似于我剛才講的動態圖構建,因為動態圖的構建本身也是學一個全連接圖,如果你本身有原始的圖,可以借用原始的圖把它放到動態圖,然后兩兩去結合促進后面的圖學習,

Q4:將圖神經網路用于NLP,重點是在于圖的構建還是在于新的模型?

A:目前圖學習的效果已經不錯了,但基于不同應用,我覺得圖的構建是比較關鍵的一件事情,尤其是如果你做靜態圖構建的時候,你的資訊選取不對或者添加的圖資訊不對的話,你有可能會引入一些bias或一些noise,然后導致學不到你想要的一個資訊,或者得到了更多noise,


今天的分享就到這里,謝謝大家,

本文首發于微信公眾號“DataFunTalk”

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/469514.html

標籤:其他

上一篇:Hadoop(三)通過C#/python實作Hadoop MapReduce

下一篇:D3.js熱圖顏色基于變數值而不是整個表的值

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more