主頁 > 資料庫 > 資料庫又出問題了?教你給MySQL做全身體檢

資料庫又出問題了?教你給MySQL做全身體檢

2020-10-23 19:35:51 資料庫

資料庫是個比較大的話題,有各種各樣資料庫常見的關系型資料庫如Mysql 、oracle、非關系型資料庫,還有圖資料庫等,資料庫性能會跟許多部分有關聯,從硬體底層存盤設備、作業系統、資料庫配置引數、資料庫架構、資料庫表結構、應用層面的連接池設定、以及SQL索引等,

資料庫架構

對Mysql資料庫進行分析,首先需要了解MySql的系統架構,如下圖所示:

image.png

從這個架構圖,來看Mysql系統架構分為應用層、MySql服務層、存盤引擎層,

  1. 應用層,應用層是MySQL體系架構的最上層,它和其他client-server架構一樣,主要包含:連接處理、用戶鑒權、安全管理

  2. MySQL服務層:該層是MysqlServer的核心層,提供了Mysql Server 資料庫所有邏輯功能

  3. 存盤引擎層

存盤引擎是MySQL中具體與檔案打交道的子系統,也是MySQL最有特色的地方,MySQL區別于其他資料庫的最重要特點是其插件式的表存盤引擎,他根據MySQL AB公司提供的檔案訪問層抽象介面來定制一種檔案訪問的機制(該機制叫存盤引擎),

物理檔案包括:redolog、undolog、binlog、errorlog、querylog、slowlog、data、index等

SQL運行程序

知道資料庫架構后,在性能分析時候需要知道這些模塊的功能及運行邏輯,明白一個具體的sql所需要經歷的程序:一個sql首先經過Connection Pool到達系統后,需要先進入Sql interface模塊判斷這個陳述句,是什么型別,然后通過Parser 模塊進行語法與語意檢查,并生成相應的執行計劃;接著到Optimizer模塊進行優化,判斷走什么索引,執行順序等,然后就到Cache中找資料,如果Caches中找不到資料的話,就得通過檔案系統到磁盤中進行尋找,

性能分析基本監控指標

了解了mysql系統架構和mysql執行程序還不夠,在進行性能分析時,需要找出mysql的問題所得先了解一些基礎知識和相應的監控工具,

首先需要了解的兩個Schema 分別是information_schema和performance_schema,information_schema,它們保存了資料庫中的所有表、列、索引、權限、配置引數、狀態引數等資訊,像我們常執行的show processlist;就來自于這個schema 中的 processlist 表,performance_schema提供了資料庫運行時的資源消耗情況,它以較低的代價收集資訊, 可以提供不少性能資料,

還有在分析mysql是需要知道的兩個命令:showglobal variables ;和show global status ;前一個用來查看配置的引數值,后一個用來查詢狀態值,不過這些命令只是簡單的羅列資訊,并沒有統計分析,接下來我們介紹兩個個比較好的監控工具,

全域分析:mysqlreport

show status 輸出的報告是用來計算性能瓶頸的參考資料,但是資料只是簡單的羅列,不好一下子看出性能問題,而mysqlreport 不像show status簡單的羅列資料,而是對這些參考資料加以融合計算,整理成一個個優化參考點,然后就可以根據這個優化參考點的值以及該點的衡量標準,進行對應的調整,

一、linux 環境下mysqlreport安裝

  1. 步驟一:yum -y install perl-DBD-MySQL 依賴包

  2. 步驟二:yum -y install perl-DBI #依賴包

  3. 步驟三 :yum -y install mysqlreport

在linux系統上經過這三步就安裝好了這個工具,接下來就可以對資料庫運行狀況進行分析了,

二、mysqlreport使用

使用比較簡單,直接執行:

mysqlreport --user tesla --password xxx@2015 --host 127.0.0.1 --no-mycnf--flush-status --outfile ./result.txt

就可以把資料庫整體情況保存到當前目錄中,

具體命令引數查看

mysqlreport —help

三、mysqlreport結果分析:

資料庫操作報表和查詢排序報表

image.png

這個表反映資料庫使用情況,608每秒操作量有點大,slow 這個引數挺重要,只是因為這里設定的慢查詢10s太長了,正常情況下盡量設定在1s左右,這塊需要對db 進行配置,把慢查詢統計設定的短些,

DMS部分告訴我們這個資料庫中各種 SQL 所占的比例,這個例子中,SELECT多,要做 SQL 優化的話,肯定優先考慮SELECT陳述句,才會起到立竿見影的效果,

  1. select and sort 查詢和排序報表

這塊的報表資料具有極大的參考性,一下就能看出問題的所在,這里的Scan(代表全表掃描)每秒48次執行全表掃描,實在是太多了,需要對陳述句進行修改,也是我們后面優化的重點內容,

  1. InnoDB 快取池報表

image.png

InnoDB 快取池報表,Innodb Buffer Pool size 定義了Innodb 存盤引擎的表資料和索引資料的最大記憶體快取大小,這部分對MySQL來說很重要,這里使用已經達到100% 這種情況下就必須要增加Innodb快取池了,這里的Read hit達到 92.57%,這個值越大越好,盡量達到100% 這里的值與Innodb buffer太小有關,

  1. 連接報表

image.png

從這里可以看出資料連接還完全夠用,

  1. 表鎖報表

Waited表示有多少次查詢需要等待表鎖定;Immediate表示有多少次查詢可以立即獲得表鎖定,同時后面還有一個比例

image.png

對資料庫來說『等待』幾乎可以肯定是一件很不好的事情,因此 Waited 的值應該要越小越好,最具有代表性的是第三個欄位 (Waited 占所有 table lock 的百分比)這里是0.00%,非常好,沒有發送過表鎖,

  1. 臨時表報表

image.png

執行explain 在sql分析時出現Using temporary的狀態,這意味著查詢程序中需要創建臨時表來存盤中間資料,我們需要通過合理的索引來避免它,另一方面,當臨時表在所難免時,也要盡量減少臨時表本身的開銷,MySQL可以將臨時表創建在磁盤(Disk table)、記憶體(Table)以及臨時檔案(File)中,顯然,在磁盤上創建臨時表的開銷最大,所以我們希望MySQL盡量不要在磁盤上創建臨時表,上面分析結果來看從臨時表創建在磁盤(Disktable)和臨時檔案(File) 上的 量級來說,還是有點偏大了,所以,可以增大tmp_table_size,

其它全域資訊可以查下資料

全域分析結果

通過mysqlreport這個工具反應的結果,有以下問題需要去解決下:

  1. 總體資料庫操作達到600多每秒,對于內網系統用戶不太多,操作有點太頻繁,看下能夠減少不必要的資料庫操作,

  2. 慢查詢未開啟,而且設定的時間太長長達10s,通常一個陳述句大于100ms 可任務需要進行優化,這里需要設定較短分析下慢查詢

  3. 全表掃描48.5/s 這塊要分析下具體的sql寫法

  4. Innodb 快取占用使用100% ,而且設定大小太小,需要增加快取大小,

pt-query-digest 工具

作為分析mysql工具的首選,因為它可以從logs、processlist、和tcpdump來分析MySQL的狀況,logs包括slow log、general log、binlog,也可以把分析結果輸出到檔案中,或則把檔案寫到表中,分析程序是先對查詢陳述句的條件進行引數化,然后對引數化以后的查詢進行分組統計,統計出各查詢的執行時間、次數、占比等,可以借助分析結果找出問題進行優化,

安裝方法

下載 https://www.percona.com/downloads/percona-toolkit/LATEST/

安裝:centos依賴包

yum -y install perl-TermReadKey perl-Time-HiResperl-IO-Socket-SSL.noarch
pt-query-digest --help

pt-query-digest分析 slow /bin log 時產生的報告邏輯非常清晰,并且資料也比較完整,執 行命令后就會生成一個報告,因為線網沒開啟slow log日志,這里我們分析下線網bin log日志

使用方法

對binlog日志進行轉換:

mysqlbinlog --no-defaults -vv --base64-output=DECODE-ROWSmysql-bin.000818 > mysql-bin.000818.txt
pt-query-digest --type=binlog mysql-bin.000818.txt > 818.report.log

篩選出全表掃描陳述句

設定資料庫設定開啟 log_queries_not_using_indexes=on;就會輸出全表掃描陳述句到慢查詢日志當中,值得注意的是,執行時間超過long_query_time的SQL陳述句也將記錄到slow log中,無論該SQL陳述句是否使用索引,

profiling的操作步驟:查看詳細執行計劃

步驟一 :set profiling=1; //這一步是為了打開profiling功能

步驟二 :執行陳述句 //執行你從慢日志中看到的陳述句

步驟三 :show profiles; //這一步是為了查找步驟二中執行的陳述句的ID

步驟四 :show profile all for query id; //這一步是為了顯示出profiling的結果

修改表結構增加索引:索引名一般是表名加欄位名

show index fromproject_permissions;
ALTER table project_permissions ADD INDEX idex_project (project_id);
ALTER table tableName ADD INDEX indexName(columnName)
create index 索引名 on 表名(欄位名1,欄位名2)

分析:執行頻率非常高的陳述句以及全表掃描
1)

explain SELECT project_id, modified_time, name, permissions, isGroupFROM project_permissions WHERE project_id=2076;

根據執行計劃和查詢條件分析,需要對project_id 建立索引,建立索引后需要注意where條件中值的型別,這里需要把project_id 改成字串,mysql隱式的將數值型別轉換成了字串型別

2)

explain SELECT id, model_name, model_type, job_id, properties,gmt_create, owner, last_execution_model, gmt_modified, published, status,module_id from mlstudio_model where job_id=13788;

資料庫表記錄9000條,沒有增加索引,可以適當對job_id增加索引,也因為資料較小優先級比較低 ALTER table mlstudio_model ADD INDEX index_model(job_id) 有2倍性能能提升

3)

explain SELECT id, name, user_id, property, gmt_create,gmt_modified, appstatus, execution_info FROM mlstudio_deployed_notebooks WHEREappstatus in (10,140,20,120) ORDER BY gmt_modified desc;

分析及方案:資料庫表記錄200多條,沒有增加索引,會全表掃描,優先級不太高,只不過property欄位和execution_info資訊資料比較大,建議如果property欄位沒有用到 查詢陳述句就不指定property

4)

explain select id, algorithm_id, version, create_time, modify_time,module_id, shared, type, source_algorithm_version_id fromti_user_algorithm_version where module_id = 813;


解決方式:資料表記錄目前較少 資料庫欄位比較短

ALTER table ti_user_algorithm_version ADD INDEX index_algorithm(module_id)

5)

explain select id, gmt_create, gmt_modified, name, type,description, checked, permission, user_id, nick_name, config_file_name,config_file_res, module_res, module_dependencies, job_type, user_coded,has_model, icon, module_jars from mlstudio_modules where module_res=0 andtype>0 and type <1001 and job_type=2;

資料記錄不多,欄位值相對都比較短,查詢出來占據空間相對較小 625條影響較小

6)

explain SELECT id, name, type, gmt_create, owner, gmt_modified,published, status, module_id, properties from mlstudio_dataset where module_id= 229;

資料記錄不多,欄位值相對都比較短,查詢出來占據空間相對較小 55條影響較小,對module_id加索引處理,查詢很少可以不用處理

7)

explain select algorithm_id from ti_user_algorithm_favorite whereuser_id = ‘jianfehuang’ and algorithm_id = 101;
create index algorithm on ti_user_algorithm_favorite (user_id,algorithm_id);

解決方案 :創建聯合索引,索引后速度有一定提升,只會查出一行記錄對快取占用小,目前資料庫記錄196條

8)

explain select cid, cname, cdesc, cicon, clevel, cparent, cvisible,group_concat(mid order by mname), sum(mpermission) as public_num from(select mmc.id as cid, mmc.name as cname,mmc.desc as cdesc,mmc.icon ascicon,mmc.level as clevel, mmc.parent_id as cparent,mmc.visible ascvisible,mmc.order_num as corder,mm.id asmid, mm.name as mname,mm.permission as mpermission from mlstudio_module_category mmc left joinmlstudio_modules mm on mmc.id =mm.type) as t group by cid, cname, cdesc, cicon, clevel, cparent, cvisibleorder by corder;

9)

select queuequota0_.id as id1_1_, queuequota0_.cpu as cpu2_1_,queuequota0_.gmt_create as gmt_crea3_1_, queuequota0_.gpu_map as gpu_map4_1_,queuequota0_.jizhi_business_flag as jizhi_bu5_1_, queuequota0_.memory asmemory6_1_, queuequota0_.name as name7_1_, queuequota0_.gmt_modified asgmt_modi8_1_, queuequota0_.uuid as uuid9_1_ from queue_quota queuequota0_ wherequeuequota0_.name=‘g_teg_teslaml_appgroup04’;

分析全表掃描:目前資料表比較小 ,資料量才155條,對性能影響較小,如果預期后面資料量變大,考慮增加索引,

10)

select task0_.id as id1_0_, task0_.admin_group as admin_gr2_0_,task0_.alert_group as alert_gr3_0_, task0_.business_flag as business4_0_,task0_.gmt_create as gmt_crea5_0_, task0_.creator as creator6_0_,task0_.description as descript7_0_, task0_.flag as flag8_0_, task0_.modifier asmodifier9_0_, task0_.name as name10_0_, task0_.project_id as project11_0_,task0_.props as props12_0_, task0_.type as type13_0_, task0_.gmt_modified as gmt_mod14_0_,task0_.view_group as view_gr15_0_ from tj_task task0_ where task0_.project_idin (1157 , 1913 , 2078);

分析全表掃描:目前太極任務資料表比較小 ,資料量才9條,對性能影響較小,如果預期后面資料量變大,考慮增加索引,

慢查詢隨著某個工程下作業流越多越慢,性能影響很大

select flow_id,max(id * 1000 + status) % 1000 as last_user_drive_status frommlstudio_execution_jobflow where (drive_type = 1 or drive_type is null) andproject_id in (24529) group by flow_id

存在問題掃描大量資料,拷貝到臨時表,在執行檔案排序,

修改為:

select f.flow_id,f.status from mlstudio_model_flowt inner join mlstudio_execution_jobflow f on t.last_jobflow_id=f.id where t.project_id in (24529)

MySQL調優之innodb_buffer_pool_size大小設定

查詢線上配置:

sql> show global variables like ‘innodb_buffer_pool_size’;
sql> show global status like ‘Innodb_buffer_pool_pages_data’;
sql> show global status like ‘Innodb_page_size’;
sql> show global status like ‘Innodb_buffer_pool_pages_total’;

內網查詢資料結果:

Innodb_buffer_pool_pages_total | 8191
Innodb_buffer_pool_pages_data | 8116
Innodb_page_size | 16384
innodb_buffer_pool_size | 134217728

調優參考計算方法:

val =Innodb_buffer_pool_pages_data / Innodb_buffer_pool_pages_total * 100%
val > 95% 則考慮增大 innodb_buffer_pool_size, 建議使用物理記憶體的75%
val < 95% 則考慮減小 innodb_buffer_pool_size, 建議設定為:Innodb_buffer_pool_pages_data * Innodb_page_size * 1.05 / (102410241024)

內網計算出來:8116/8190=99% 需要加大這個資料

資料庫配置修改: 測驗環境修改的/etc/my.cnf

1、開啟慢查詢日志,慢查詢記錄為1秒 ,這個對資料庫性能有1%的影響,可以開啟一段時間收集一段時間資料后關閉

slow_query_log = ON
long_query_time = 1

2、Innodb快取增大

innodb_buffer_pool_size = 2G #設定2G

3、臨時表目前64M 需要加大

tmp_table_size = 256M;
max_heap_table_size = 256M;

總結

本文簡單介紹了資料庫優化的相關方法,通過兩個工具全域分析:mysqlreport對show status 這些參考資料加以融合計算,整理成一個個優化參考點,然后就可以根據這個優化參考點的值以及該點的衡量標準,進行對應的調整,

pt-query-digest 工具,可以從logs、processlist、和tcpdump 來分析MySQL的狀況,logs包括slow log、general log、binlog,可以借助分析結果找出問題進行優化,通過這兩個工具可以在資料庫配置層,對mysql進行相對比較優化的配置還可以找出性能比較慢的陳述句,通過profiling 詳細分析sql執行的程序進行優化,

本文由博客一文多發平臺 OpenWrite 發布!

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

標籤:其他

上一篇:除了MySQL,大牛DBA還會啥?

下一篇:騰訊云資料庫一體機亮相數字中國建設成果展覽會

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