主頁 > 資料庫 > MyCat 學習及使用 -- 如何配置分庫分表

MyCat 學習及使用 -- 如何配置分庫分表

2021-01-11 16:16:20 資料庫

什么是MyCat

Mycat 是什么?從定義和分類來看,它是一個開源的分布式資料庫系統,是一個實作了MySQL 協議的的Server,前端用戶可以把它看作是一個資料庫代理,用MySQL 客戶端工具和命令列訪問,而其后端可以用MySQL 原生(Native)協議與多個MySQL 服務器通信,也可以用JDBC 協議與大多數主流資料庫服務器通信,其核心功能是分表分庫,即將一個大表水平分割為N 個小表,存盤在后端MySQL 服務器里或者其他資料庫里,

Mycat 發展到目前的版本,已經不是一個單純的MySQL 代理了,它的后端可以支持MySQL、SQLServer、Oracle、DB2、PostgreSQL 等主流資料庫,也支持MongoDB 這種新型NoSQL 方式的存盤,未來還會支持更多型別的存盤,而在最終用戶看來,無論是那種存盤方式,在Mycat 里,都是一個傳統的資料庫表,支持標準的SQL 陳述句進行資料的操作,這樣一來,對前端業務系統來說,可以大幅降低開發難度,提升開發速度,

核心實作原理

Mycat 的原理中最重要的一個動詞是“攔截”,它攔截了用戶發送過來的SQL 陳述句,首先對SQL 陳述句做了一些特定的分析:如分片分析、路由分析、讀寫分離分析、快取分析等,然后將此SQL 發往后端的真實資料庫,并將回傳的結果做適當的處理,最終再回傳給用戶,當Mycat 收到一個SQL 時,會先決議這個SQL,查找涉及到的表,然后看此表的定義,如果有分片規則,則獲取到SQL 里分片欄位的值,并匹配分片函式,得到該SQL 對應的分片串列,然后將SQL 發往這些分片去執行,最后收集和處理所有分片回傳的結果資料,并輸出到客戶端,

主體架構

Mycat在邏率持上由幾個模塊組成:通信協議、路由決議、結果集處理、資料庫連接、監控等模塊,

  1. 通信協議模塊:底層的收發資料、執行緒回呼處理作業,主要采用 Reactor、 proactor模式來提高效率,目前, Mycat通信模塊默認釆用 Reactor模式,在協議層采用 MySQL協議,
  2. 路由決議模塊:對傳入的SL陳述句進行語法決議,決議從 MySQL協議中決議出來并進入該模塊的SQL陳述句的條件、陳述句型別、攜帶的關鍵字等,對符合要求的SQL陳述句進行相關優化,最后根據這些路由計算單元進行路由計算,
  3. 結果集處理模塊:對跨分片的結果進行匯聚、排序、截取等,由于資料存盤在不同的資料庫中,所以對跨分片的資料需要進行匯聚,
  4. 資料庫連接模塊:創建、管理、維護后端的連接池,為了誠少每次建立資料庫連接的開銷,資料庫使用連接池機制對連接生命周期進行管理
  5. 監控管理模塊:對 Mycat中的連接、記憶體等資源進行監控和管理,監控主要是通過管理命令實時地展現一些監控資料,例如連接數、快取命中數等;管理則主要通過輪詢事件來檢測和釋放不使用的資源,
  6. SQL執行模塊:從連接池中獲取相應的目標連接,對目標連接進行資訊同步后,再根據路由決議的結果,把SQL陳述句分發到相應的節點執行,

執行流程

主要流程:由通信協議模塊的讀寫事件通知發起,讀寫事件通知具體的回呼代碼進行這次讀寫事件的處理,管理模塊的執行流程由定時器事件進行資源檢查和資源釋放時發起,由客戶端發送過來的資料通過協議決議、路由決議等流程進入執行組件,通過執行組把資料發送到通信協議模塊,最終資料被寫入目標資料庫,由后端資料庫回傳資料,通過協議決議后發送至回呼模塊,如果是涉及多節點的資料,則執行流程將會先進入結果集匯聚、排序等模塊中,然后將處理后的資料通過通信協議模塊回傳到客戶端,如果有排序則是用的將結果集在mycat中進行了堆排序,

從原理上來看,可以把mycat 看成一個sql 轉發器,mycat 接收到前端發來的sql,然后轉發到后臺的mysql 服務器上去執行,但是后面有很多臺mysql 節點(如dn1,dn2,dn3),該轉發到哪些節點呢?這就是路由決議該做的事情了,路由能保證sql 轉發到正確的節點,轉發的范圍是剛剛好,不多發也不少發,在選型上,mycat使用的是druidparser,

核心概念

  1. 邏輯庫(schema):通常對實際應用來說,并不需要知道中間件的存在,業務開發人員只需要知道資料庫的概念,所以資料庫中間件可以被看做是一個或多個資料庫集群構成的邏輯庫,
  2. 邏輯表(table):既然有邏輯庫,那么就會有邏輯表,分布式資料庫中,對應用來說,讀寫資料的表就是邏輯表,邏輯表,可以是資料切分后,分布在一個或多個分片庫中,也可以不做資料切分,不分片,只有一個表構成,
  3. 分片表:分片表,是指那些原有的很大資料的表,需要切分到多個資料庫的表,這樣,每個分片都有一部分資料,所有分片構成了完整的資料,
  4. 非分片表:一個資料庫中并不是所有的表都很大,某些表是可以不用進行切分的,非分片是相對分片表來說的,就是那些不需要進行資料切分的表,
  5. ER 表:關系型資料庫是基于物體關系模型(Entity-Relationship Model)之上,通過其描述了真實世界中事物與關系,Mycat 中的ER 表即是來源于此,根據這一思路,提出了基于E-R 關系的資料分片策略,子表的記錄與所關聯的父表記錄存放在同一個資料分片上,即子表依賴于父表,通過表分組(Table Group)保證資料Join 不會跨庫操作,表分組(Table Group)是解決跨分片資料join 的一種很好的思路,也是資料切分規劃的重要一條規則,
  6. 全域表:一個真實的業務系統中,往往存在大量的類似字典表的表,這些表基本上很少變動, 對于這類的表,在分片的情況下,當業務表因為規模而進行分片以后,業務表與這些附屬的字典表之間的關聯,就成了比較棘手的問題,所以Mycat 中通過資料冗余來解決這類表的join,即所有的分片都有一份資料的拷貝,所有將字典表或者符合字典表特性的一些表定義為全域表,資料冗余是解決跨分片資料join 的一種很好的思路,也是資料切分規劃的另外一條重要規則,
  7. 分片節點(dataNode):資料切分后,一個大表被分到不同的分片資料庫上面,每個表分片所在的資料庫就是分片節點(dataNode),
  8. 節點主機(dataHost):資料切分后,每個分片節點(dataNode)不一定都會獨占一臺機器,同一機器上面可以有多個分片資料庫,這樣一個或多個分片節點(dataNode)所在的機器就是節點主機(dataHost),為了規避單節點主機并發數限制,盡量將讀寫壓力高的分片節點(dataNode)均衡的放在不同的節點主機(dataHost),
  9. 分片規則(rule):前面講了資料切分,一個大表被分成若干個分片表,就需要一定的規則,這樣按照某種業務規則把資料分到某個分片的規則就是分片規則,資料切分選擇合適的分片規則非常重要,將極大的避免后續資料處理的難度,
  10. 全域序列號(sequence):資料切分后,原有的關系資料庫中的主鍵約束在分布式條件下將無法使用,因此需要引入外部機制保證資料唯一性標識,這種保證全域性的資料唯一標識的機制就是全域序列號(sequence),

安裝與部署

MyCAT 是使用JAVA 語言進行撰寫開發,使用前需要先安裝JAVA 運行環境(JRE),由于MyCAT 中使用了JDK7 中的一些特性,所以要求必須在JDK7 以上的版本上運行,同時Mysql建議使用5.5以上版本,5.6為宜,進入https://github.com/MyCATApache/Mycat-download,在串列中選擇一個合適自己作業系統的包下載,然后解壓在某個目錄下,Mycat是個標準的Java程式,解壓后即可運行,Linux下執行 mycat ,windows下執行 startup_nowrap.bat,

其中 bin 程式目錄,存放了啟動腳本,除了提供封裝成服務的版本之外,也提供了nowrap 的腳本命令,conf 目錄下存放組態檔,server.xml 是Mycat 服務器引數調整和用戶授權的組態檔,schema.xml 是邏輯庫定義和表以及分片定義的組態檔,rule.xml 是分片規則的組態檔,分片規則的具體一些引數資訊單獨存放為檔案,也在這個目錄下,組態檔修改,需要重啟Mycat 或者通過9066 埠reload,lib 目錄下主要存放mycat 依賴的一些jar 檔案,日志存放在logs/mycat.log 中,每天一個檔案,日志的配置是在conf/log4j.xml 中,根據自己的需要,可以調整輸出級別為debug,debug 級別下,會輸出更多的資訊,方便排查問題,

配置詳解

主要組態檔為server.xml,schema.xml,rule.xml以及相應的分片規則,

server.xml

server.xml用于配置系統引數、用戶資訊、訪問權限及SQL防火墻和SQL攔截功能等,

system 標簽

配置 Mycat 的系統引數,

	<system>
		<property name="nonePasswordLogin">0</property> <!-- 0為需要密碼登陸、1為不需要密碼登陸 ,默認為0,設定為1則需要指定默認賬戶-->
		<property name="useHandshakeV10">1</property>
		<property name="useSqlStat">0</property>  <!-- 1為開啟實時統計、0為關閉 -->
		<property name="useGlobleTableCheck">0</property>  <!-- 1為開啟全加班一致性檢測、0為關閉 -->

		<property name="sequnceHandlerType">2</property>
		<property name="subqueryRelationshipCheck">false</property> <!-- 子查詢中存在關聯查詢的情況下,檢查關聯欄位中是否有分片欄位 .默認 false -->

        <!--默認為type 0: DirectByteBufferPool | type 1 ByteBufferArena | type 2 NettyBufferPool -->
		<property name="processorBufferPoolType">0</property>
		<!--分布式事務開關,0為不過濾分布式事務,1為過濾分布式事務(如果分布式事務內只涉及全域表,則不過濾),2為不過濾分布式事務,但是記錄分布式事務日志-->
		<property name="handleDistributedTransactions">0</property>
		
		<!-- off heap for merge/order/group/limit      1開啟   0關閉 -->
		<property name="useOffHeapForMerge">1</property>

        <property name="memoryPageSize">64k</property>

		<property name="spillsFileBufferSize">1k</property>
		<property name="useStreamOutput">0</property>
		<property name="systemReserveMemorySize">384m</property>


		<!--是否采用zookeeper協調切換  -->
		<property name="useZKSwitch">false</property>

		<!-- XA Recovery Log日志路徑 -->
		<!--<property name="XARecoveryLogBaseDir">./</property>-->

		<!-- XA Recovery Log日志名稱 -->
		<!--<property name="XARecoveryLogBaseName">tmlog</property>-->
	</system>

user 標簽

配置Mycat的訪問用戶及權限,

	<user name="root" defaultAccount="true">
		<property name="password">123456</property>
		<property name="schemas">db1,db2</property>
		
		<!-- 表級 DML 權限設定 -->
		<!-- 		
		<privileges check="false">
			<schema name="db1" dml="0110" >
				<table name="demotb" dml="0000"></table>
			</schema>
		</privileges>		
		 -->
	</user>

schema.xml

schema.xml用于配置邏輯庫及邏輯表,配置邏輯表所存盤的資料節點,配置資料節點所對應的物理資料庫服務器資訊,

dataHost 標簽

定義了具體的資料庫實體、讀寫分離配置和心跳陳述句,

	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="0"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<!-- can have multi write hosts -->
		<writeHost host="hostM1" url="localhost:3306" user="root"
				   password="123456">
				   <!-- can have multi read hosts -->
				   <readHost host="hostS1" url="localhost:3307" user="root" password="123456" />
		</writeHost>
	</dataHost>
  1. heartbeat 標簽:內指明用于和后端資料庫進行心跳檢查的陳述句,例如,MySQL可以使用select user(),Oracle可以使用select 1 from dual 等,
  2. writehost 、readHost標簽:這兩個標簽都用于配置一組主從資料庫的相關資訊,Mycat用這兩個標簽配置的連接資訊實體化后端連接池,唯一不同的是,writeHost 配置寫實體(master)、readHost 配置讀實體(salve),并且readHostwriteHost 的子標簽,通過這兩個標簽可以組合讀/寫實體以滿足系統的要求,在一個dataHost內可以定義多個writeHostreadHost,但是,如果writeHost指定的后端資料庫宕機,那么這個writeHost系結的所有readHost都將不可用,另一方面,當一個writeHost宕機時系統會自動檢測到,并切換到備用的writeHost 上去,

dataNode 標簽

定義了 MyCat 中的資料節點,也就是我們通常說所的資料分片,一個 dataNode 標簽就是一個獨立的資料分片,

	<dataNode name="dnUser1" dataHost="localhost1" database="user" />
	<dataNode name="dnUser2" dataHost="localhost1" database="user01" />
	<dataNode name="dnUser3" dataHost="localhost1" database="user02" />

schema 標簽

定義 MyCat 實體中的邏輯庫,MyCat 可以有多個邏輯庫,每個邏輯庫都有自己的相關配置,可以使用 schema 標簽來劃分這些不同的邏輯庫,

	<schema name="schema_db1"  checkSQLschema="false"  sqlMaxLimit="100"></schema>
	<schema name="schema_db2"  checkSQLschema="false"  sqlMaxLimit="100"></schema>

table 標簽

定義了 MyCat 中的邏輯表,所有需要拆分的表都需要在這個標簽中定義,其中 childTable 標簽用于定義 E-R 分片的子表,通過標簽上的屬性與父表進行關聯,

	<schema name="USERDB" checkSQLschema="false" sqlMaxLimit="100">
		<table name="user" primaryKey="id"  dataNode="dnUser1,dnUser2,dnUser3" rule="user-mod-long">
			<childTable name="user_log" primaryKey="id" joinKey="user_id"
						parentKey="id">
			</childTable>
		</table>
		<table name="area" primaryKey="area_code" type="global" dataNode="dnUser1,dnUser2,dnUser3" />
	</schema>
屬性說明
name該屬性定義邏輯表的表名
dataNode該屬性定義這個邏輯表所屬的 dataNode, 該屬性的值需要和 dataNode 標簽中 name 屬性的值相互對應,
rule該屬性用于指定邏輯表要使用的規則名字,規則名字在 rule.xml 中定義,必須與 tableRule 標簽中 name 屬性屬性值一一對應
ruleRequired該屬性用于指定表是否系結分片規則,如果配置為 true,但沒有配置具體 rule 的話 ,程式會報錯,
primaryKey該邏輯表對應真實表的主鍵
type該屬性定義了邏輯表的型別,目前邏輯表只有“全域表”和”普通表”兩種型別,全域表定義type=”global”,不定義的就是普通表,
autoIncrement主鍵是否自增長,
subTables分表,分表目前不支持Join,
needAddLimit是否自動添加limit,默認是開啟狀態,

這里定義了一個邏輯表user表及其子表user_log,分片規則為user-mod-long,一個全域表area,

rule.xml

定義了我們對表進行拆分所涉及到的規則定義,

tableRule標簽

屬性 name指定唯一的名字,用于標識不同的表規則,內嵌的 rule 標簽則指定對物理表中的哪一列進行拆分和使用什么路由演算法,

	<tableRule name="user-mod-long">
		<rule>
            <!-- 指定使用表中的哪個列進行分片 -->
			<columns>id</columns>
            <!-- 指定表的分片演算法,取值為<function>標簽的name屬性 -->
			<algorithm>mod-long</algorithm>
		</rule>
	</tableRule>

function標簽

定義了tableRule中使用的分片演算法,

	<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
		<!-- how many data nodes -->
		<property name="count">3</property>
	</function>	

常用的幾個分片演算法:

  • PartitionByMod:簡單取模,直接通過列值進行取模得出分片位置
  • PartitionByHashMod:哈希取模,先將列值進行hash運算之后再取模得出分片位置
  • PartitionByFileMap:分片列舉,根據列舉值對資料進行分片,例如在異地多活的場景中通過地區id進行資料分片的場景
  • PartitionByPrefixPattern:字串范圍取模,根據長字串的前面幾位進行取模分片

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

標籤:其他

上一篇:MySQL學習:操作資料庫陳述句

下一篇:《Mysql是怎樣運行的》讀書筆記之B+樹索引的使用

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