主頁 > 資料庫 > 資料庫性能優化8大通用方案

資料庫性能優化8大通用方案

2022-05-04 07:11:29 資料庫

前言

毫不夸張地說,咱們后端工程師,無論在哪家公司,呆在哪個團隊,做哪個系統,遇到的第一個讓人頭疼的問題絕對是資料庫性能問題,如果我們有一套成熟的方法論,能讓大家快速、準確的去選擇出合適的優化方案,我相信能夠快速準備解決咱們日常遇到的80%-90%的性能問題,

從解決問題的角度出發,我們得先了解到問題的原因;其次我們得有一套思考、判斷問題的流程方式,讓我們合理的站在哪個層面選擇方案;最后從眾多的方案里面選擇一個適合的方案進行解決問題,找到一個合適的方案的前提,是我們自己對各種方案之間的優缺點、場景有足夠的了解,沒有一個方案是完全可以通吃通用的,軟體工程沒有銀彈,

下文的我作業多年以來,曾經使用過的八大方案,結合了平常自己學習收集的一些資料,以系統、全面的方式整理成了這篇博文,也希望能讓一些有需要的同行在作業上、成長上提供一定的幫助,

一、為什么資料庫會慢?

 

 

 無論是關系型資料庫還是 NoSQL,任何存盤系統決定于其查詢性能的主要有三種:

  • 查找的時間復雜度
  • 資料總量
  • 高負載

而決定于查找時間復雜度主要有兩個因素:

  • 查找演算法
  • 存盤資料結構

無論是哪種存盤,資料量越少,自然查詢性能就越高,隨著資料量增多,資源的消耗(CPU、磁盤讀寫繁忙)、耗時也會越來越高,

從關系型資料庫角度出發,索引結構基本固定是 B+Tree,時間復雜度是 O(log n),存盤結構是行式存盤,因此咱們對于關系資料庫能優化的一般只有資料量,

而高負載造成原因有高并發請求、復雜查詢等,導致 CPU、磁盤繁忙等,而服務器資源不足則會導致慢查詢等問題,該型別問題一般會選擇集群、資料冗余的方式分擔壓力,

 

 

二、應該站在哪個層面思考優化?

 

 從上圖可見,自頂向下的一共有四層,分別是硬體、存盤系統、存盤結構、具體實作

層與層之間是緊密聯系的,每一層的上層是該層的載體;因此越往頂層越能決定性能的上限,同時優化的成本也相對會比較高,性價比也隨之越低,

以最底層的具體實作為例,那么索引的優化的成本應該是最小的,可以說加了索引后無論是 CPU 消耗還是回應時間都是立竿見影降低,

然而一個簡單的陳述句,無論如何優化加索引也是有局限的,當在具體實作這層沒有任何優化空間的時候就得往上一層【存盤結構】思考,思考是否從物理表設計的層面出發優化(如分庫分表、壓縮資料量等),如果是檔案型資料庫得思考下檔案聚合的結果,

如果在存盤結構這層優化得沒效果,得繼續往再上一次進行考慮,是否關系型資料庫應該不適合用在現在得業務場景?如果要換存盤,那么得換怎樣得 NoSQL?

所以咱們優化的思路,出于性價比的優先考慮具體實作,實在沒有優化空間了再往上一層考慮,當然如果公司有錢,直接使用鈔能力,繞過了前面三層,這也是一種便捷的應急處理方式,

該篇文章不討論頂與底的兩個層面的優化,主要從存盤結構、存盤系統中間兩層的角度出發進行探討,

三、八大方案總結

資料庫的優化方案核心本質有三種:減少資料量、用空間換性能、選擇合適的存盤系統,這也對應了開篇講解的慢的三個原因:資料總量、高負載、查找的時間復雜度

這里大概解釋下收益型別:短期收益,處理成本低,能緊急應對,久了則會有技術債務;長期收益則跟短期收益相反,短期內處理成本高,但是效果能長久使用,擴展性會更好,

靜態資料意思是,相對改動頻率比較低的,也無需過多聯表的,where 過濾比較少,動態資料與之相反,更新頻率高,通過動態條件篩選過濾,

減少資料量

減少資料量型別共有四種方案:資料序列化存盤、資料歸檔、中間表生成、分庫分表

就如上面所說的,無論是哪種存盤,資料量越少,自然查詢性能就越高,隨著資料量增多,資源的消耗(CPU、磁盤讀寫繁忙)、耗時也會越來越高,

目前市面上的 NoSQL 基本上都支持分片存盤,所以其天然分布式寫的能力從資料量上能得到非常的解決方案,

而關系型資料庫,查找演算法與存盤結構是可以優化的空間比較少,因此咱們一般思考出發點只有從如何減少資料量的這個角度進行選擇優化,因此本型別的優化方案主要針對關系型資料庫進行處理,

 

 

 1)資料歸檔

注意點:別一次性遷移數量過多,建議低頻率多次限量遷移,像 MySQL 由于洗掉資料后是不會釋放空間的,可以執行命令 OPTIMIZE TABLE 釋放存盤空間,但是會鎖表,如果存盤空間還滿足,可以不執行,

建議優先考慮該方案,主要通過資料庫作業把非熱點資料遷移到歷史表,如果需要查歷史資料,可新增業務入口路由到對應的歷史表(庫),

 

 

 

2)中間表(結果表)

 

中間表(結果表)其實就是利用調度任務把復雜查詢的結果跑出來存盤到一張額外的物理表,因為這張物理表存放的是通過跑批匯總后的資料,因此可以理解成根據原有的業務進行了高度的資料壓縮,

以報表為例,如果一個月的源資料有數十萬,我們通過調度任務以月的維度生成,那么等于把原有的資料壓縮了幾十萬分之一,

接下來的季報和年報可以根據月報*N 來進行統計,以這種方式處理的資料,就算三年、五年甚至十年資料量都可以在接受范圍之內,而且可以精確計算得到,那么資料的壓縮比率是否越低越好?

下面有一段口訣:

  • 欄位越多,粒度越細,靈活性越高,可以以中間表進行不同業務聯表處理,
  • 欄位越少,粒度越粗,靈活性越低,一般作為結果表查詢出來,

3)資料序列化存盤

 

在資料庫以序列化存盤的方式,對于一些不需要結構化存盤的業務來說是一種很好減少資料量的方式,特別是對于一些M*N的資料量的業務場景,如果以M作為主表優化,那么就可以把資料量維持最多是M的量級,另外像訂單的地址資訊,這種業務一般是不需要根據里面的欄位檢索出來,也比較適合,

這種方案我認為屬于一種臨時性的優化方案,無論是從序列化后丟失了部份欄位的查詢能力,還是這方案的可優化性都是有限的,

 

4)分庫分表

分庫分表作為資料庫優化的一種非常經典的優化方案,特別是在以前 NoSQL 還不是很成熟的年代,這個方案就如救命草一般的存在,

如今也有不少同行也會選擇這種優化方式,但是從我角度來看,分庫分表是一種優化成本很大的方案,

這里我有幾個建議:

  • 分庫分表是實在沒有辦法的辦法,應放到最后選擇,
  • 優先選擇 NoSQL 代替,因為 NoSQL 誕生基本上為了擴展性與高性能,
  • 究竟分庫還是分表?量大則分表,并發高則分庫
  • 不考慮擴容,一部做到位,因為技術更新太快了,每 3-5 年一大變,

① 拆分方式

只要涉及到這個拆,那么無論是微服務也好,分庫分表也好,拆分的方式主要分兩種:垂直拆分、水平拆分

垂直拆分更多是從業務角度進行拆分,主要是為了降低業務耦合度;此外以 SQL Server 為例,一頁是 8KB 存盤,如果在一張表里欄位越多,一行資料自然占的空間就越大,那么一頁資料所存盤的行數就自然越少,那么每次查詢所需要 IO 則越高因此性能自然也越慢,因此反之,減少欄位也能很好提高性能,之前我聽說某些同行的表有 80 個欄位,幾百萬的資料就開始慢了,

水平拆分更多是從技術角度進行拆分,拆分后每張表的結構是一模一樣的,簡而言之就是把原有一張表的資料,通過技術手段進行分片到多張表存盤,從根本上解決了資料量的問題,

 

 

 

 ② 路由方式

進行水平拆分后,根據磁區鍵(sharding key)原來應該在同一張表的資料拆解寫到不同的物理表里,那么查詢也得根據磁區鍵進行定位到對應的物理表從而把資料給查詢出來,

路由方式一般有三種區間范圍、Hash、分片映射表,每種路由方式都有自己的優點和缺點,可以根據對應的業務場景進行選擇,

區間范圍根據某個元素的區間的進行拆分,以時間為例子,假如有個業務我們希望以月為單位拆分那么表就會拆分像 table_2022-04,這種對于檔案型、ElasticSearch 這型別的 NoSQL 也適用,無論是定位查詢,還是日后清理維護都是非常的方便的,

那么缺點也明顯,會因為業務獨特性導致資料不平均,甚至不同區間范圍之間的資料量差異很大,

Hash也是一種常用的路由方式,根據 Hash 演算法取模以資料量均勻分別存盤在物理表里,缺點是對于帶磁區鍵的查詢依賴特別強,如果不帶磁區鍵就無法定位到具體的物理表導致相關所有表都查詢一次,而且在分庫的情況下對于 Join、聚合計算、分頁等一些 RDBMS 的特性功能還無法使用,

般磁區鍵就一個,假如有時候業務場景得用不是磁區鍵的欄位進行查詢,那么難道就必須得全部掃描一遍?其實可以使用分片映射表的方式,簡單來說就是額外有一張表記錄額外欄位與磁區鍵的映射關系,

舉個例子,有張訂單表,原本是以 UserID 作為磁區鍵拆分的,現在希望用 OrderID 進行查詢,那么得有額外得一張物理表記錄了 OrderID 與 UserID 的映射關系,因此得先查詢一次映射表拿到磁區鍵,再根據磁區鍵的值路由到對應的物理表查詢出來,

可能有些朋友會問,那這映射表是否多一個映射關系就多一張表,還是多個映射關系在同一張表,我優先建議單獨處理,如果說映射表欄位過多,那跟不進行水平拆分時的狀態其實就是一致的,這又跑回去的老問題,

用空間換性能

該型別的兩個方案都是用來應對高負載的場景,方案有以下兩種:分布式快取、一主多從

與其說這個方案叫用空間換性能,我認為用空間換資源更加貼切一些,因此兩個方案的本質主要通過資料冗余、集群等方式分擔負載壓力,

對于關系型資料庫而言,因為他的 ACID 特性讓它天生不支持寫的分布式存盤,但是它依然天然的支持分布式讀,

 

 1)分布式快取

 

 

快取層級可以分好幾種:客戶端快取、API 服務本地快取和分布式快取,咱們這次只聊分布式快取,

一般我們選擇分布式快取系統都會優先選擇 NoSQL 的鍵值型資料庫,例如 Memcached、Redis,如今 Redis 的資料結構多樣性,高性能,易擴展性也逐漸占據了分布式快取的主導地位,

快取策略也主要有很多種:Cache-Aside、Read/Wirte-Through、Write-Back,咱們用得比較多的方式主要 Cache-Aside,

具體流程可看下圖:

 我相信大家對分布式快取相對都比較熟悉了,但是我在這里還是有幾個注意點希望提醒一下大家:

① 避免濫用快取

快取應該是按需使用,從 28 法則來看,80% 的性能問題由主要的 20% 的功能引起,濫用快取的后果會導致維護成本增大,而且有一些資料一致性的問題也不好定位,

特別像一些動態條件的查詢或者分頁,key 的組裝是多樣化的,量大又不好用 keys 指令去處理,當然我們可以用額外的一個 key 把記錄資料的 key 以集合方式存盤,洗掉時候做兩次查詢,先查 Key 的集合,然后再遍歷 Key 集合把對應的內容洗掉,

這一頓操作下來無疑是非常廢功夫的,誰弄誰知道,

 

 

 ② 避免快取擊穿

當快取沒有資料,就得跑去資料庫查詢出來,這就是快取穿透,

假如某個時間臨界點資料是空的例如周排行榜,穿透過去的無論查找多少次資料庫仍然是空,而且該查詢消耗 CPU 相對比較高,并發一進來因為缺少了快取層的對高并發的應對,這個時候就會因為并發導致資料庫資源消耗過高,這就是快取擊穿,資料庫資源消耗過高就會導致其他查詢超時等問題,

該問題的解決方案也簡單,對于查詢到資料庫的空結果也快取起來,但是給一個相對快過期的時間,有些同行可能又會問,這樣不就會造成了資料不一致了么?一般有資料同步的方案像分布式快取、后續會說的一主多從、CQRS,只要存在資料同步這幾個字,那就意味著會存在資料一致性的問題,因此如果使用上述方案,對應的業務場景應允許容忍一定的資料不一致,

③ 不是所有慢查詢都適用

一般來說,慢的查詢都意味著比較吃資源的(CPU、磁盤 I/O),

舉個例子,假如某個查詢功能需要 3 秒時間,串行查詢的時候并沒什么問題,我們繼續假設這功能每秒大概 QPS 為 100,那么在第一次查詢結果回傳之前,接下來的所有查詢都應該穿透到資料庫,也就意味著這幾秒時間有 300 個請求到資料庫,如果這個時候資料庫 CPU 達到了 100%,那么接下來的所有查詢都會超時,也就是無法有第一個查詢結果快取起來,從而還是形成了快取擊穿,

2)一主多從

 

 

常用的分擔資料庫壓力還有一種常用做法,就是讀寫分離、一主多從,咱們都是知道關系型資料庫天生是不具備分布式分片存盤的,也就是不支持分布式寫,但是它天然的支持分布式讀,

一主多從是部署多臺從庫只讀實體,通過冗余主庫的資料來分擔讀請求的壓力,路由演算法可有代碼實作或者中間件解決,具體可以根據團隊的運維能力與代碼組件支持視情況選擇,

一主多從在還沒找到根治方案前是一個非常好的應急解決方案,特別是在現在云服務的年代,擴展從庫是一件非常方便的事情,而且一般情況只需要運維或者 DBA 解決就行,無需開發人員接入,

當然這方案也有缺點,因為資料無法分片,所以主從的資料量完全冗余過去,也會導致高的硬體成本,從庫也有其上限,從庫過多了會主庫的多執行緒同步資料的壓力,

 

 

選擇合適的存盤系統

NoSQL 主要以下五種型別:鍵值型、檔案型、列型、圖型、搜素引擎,不同的存盤系統直接決定了查找演算法、存盤資料結構,也應對了需要解決的不同的業務場景,NoSQL 的出現也解決了關系型資料庫之前面臨的難題(性能、高并發、擴展性等),

例如,ElasticSearch 的查找演算法是倒排索引,可以用來代替關系型資料庫的低性能、高消耗的 Like 搜索(全表掃描),而 Redis 的 Hash 結構決定了時間復雜度為 O(1),還有它的記憶體存盤,結合分片集群存盤方式以至于可以支撐數十萬 QPS,

因此本型別的方案主要有兩種:CQRS、替換(選擇)存盤,這兩種方案的最終本質基本是一樣的主要使用合適存盤來彌補關系型資料庫的缺點,只不過切換過渡的方式會有點不一樣,

 

 1)CQRS

CQS(命令查詢分離)指同一個物件中作為查詢或者命令的方法,每個方法或者回傳的狀態,要么改變狀態,但不能兩者兼備,

 

 

講解 CQRS 前得了解 CQS,有些小伙伴看了估計還沒不是很清晰,我這里用通俗的話解釋:某個物件的資料訪問的方法里,要么只是查詢,要么只是寫入(更新),

而 CQRS(命令查詢職責分離)基于 CQS 的基礎上,用物理資料庫來寫入(更新),而用另外的存盤系統來查詢資料,

因此我們在某些業務場景進行存盤架構設計時,可以通過關系型資料庫的 ACID 特性進行資料的更新與寫入,用 NoSQL 的高性能與擴展性進行資料的查詢處理,

這樣的好處就是關系型資料庫和 NoSQL 的優點都可以兼得,同時對于某些業務不適于一刀切的替換存盤的也可以有一個平滑的過渡,

從代碼實作角度來看,不同的存盤系統只是呼叫對應的介面 API,因此 CQRS 的難點主要在于如何進行資料同步,

2)資料同步方式

 

 一般討論到資料同步的方式主要是分推和拉:

  • 指的是由資料變更端通過直接或者間接的方式把資料變更的記錄發送到接收端,從而進行資料的一致性處理,這種主動的方式優點是實時性高,
  • 指的是接收端定時的輪詢資料庫檢查是否有資料需要進行同步,這種被動的方式從實作角度來看比推簡單,因為推是需要資料變更端支持變更日志的推送的,

而推的方式又分兩種:CDC(變更資料捕獲)和領域事件,對于一些舊的專案來說,某些業務的資料入口非常多,無法完整清晰的梳理清楚,這個時候 CDC 就是一種非常好的方式,只要從最底層資料庫層面把變更記錄取到就可,

對于已經服務化的專案來說領域事件是一種比較舒服的方式,因為 CDC 是需要資料庫額外開啟功能或者部署額外的中間件,而領域事件則不需要,從代碼可讀性來看會更高,也比較開發人員的維護思維模式,

 

 3)替換(選擇)存盤系統

因為從本質來看該模式與 CQRS 的核心本質是一樣的,主要是要對 NoSQL 的優缺點有一個全面認識,這樣才能在對應業務場景選擇與判斷出一個合適的存盤系統,

這里我像大家介紹一本書馬丁.福勒《NoSQL精粹》,這本書我重復看了好幾遍,也很好全面介紹各種 NoSQL 優缺點和使用場景,

當然替換存盤的時候,我這里也有個建議:加入一個中間版本,該版本做好資料同步與業務開關,資料同步要保證全量與增加的處理,隨時可以重來,業務開關主要是為了后續版本的更新做的一個臨時型的功能,主要避免后續版本更新不順利或者因為版本更新時導致的資料不一致的情況出現,

在跑了一段時間后,驗證了兩個不同的存盤系統資料是一致的后,接下來就可以把資料訪問層的底層呼叫替換了,如此一來就可以平滑的更新切換,

總結

本文到這里就把八大方案介紹完了,在這里再次提醒一句,每個方案都有屬于它的應對場景,咱們只能根據業務場景選擇對應的解決方案,沒有通吃,沒有銀彈,

這八個方案里,大部分都存在資料同步的情況,只要存在資料同步,無論是一主多從、分布式快取、CQRS 都好,都會有資料一致性的問題導致,因此這些方案更多適合一些只讀的業務場景,

當然有些寫后既查的場景,可以通過過渡頁或者廣告頁通過用戶點擊關閉切換頁面的方式來緩解資料不一致性的情況,

通過這篇文章我相信大家對資料庫設計優化有了一個全面的認識,

 

作者丨陳珙

本文來自博客園,作者:古道輕風,轉載請注明原文鏈接:https://www.cnblogs.com/88223100/p/Eight_general_solutions_for_database_performance_optimization.html

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

標籤:其他

上一篇:Centos安裝mysql57

下一篇:dba+開源工具:MHA復刻版,輕松實作MySQL高可用故障轉移(附下載)

標籤雲
其他(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