哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何一眼定位SQL的代碼來源:一款SQL染色標(biāo)記的簡易MyBatis插件

京東云 ? 來源:京東物流 郭忠強(qiáng) ? 作者:京東物流 郭忠強(qiáng) ? 2025-03-05 11:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:京東物流 郭忠強(qiáng)

導(dǎo)語

本文分析了后端研發(fā)和運(yùn)維在日常工作中所面臨的線上SQL定位排查痛點(diǎn),基于姓名貼的靈感,設(shè)計(jì)和開發(fā)了一款SQL染色標(biāo)記的MyBatis插件。該插件輕量高效,對(duì)業(yè)務(wù)代碼無侵入,接入簡單,支持SELECT、INSERT、UPDATE、DELETE等語句,同時(shí)也支持無WHERE條件SQL的標(biāo)記增強(qiáng)。該SQL染色插件并不改變SQL指紋,染色信息內(nèi)置了statementId、PFinderId,方便分布式跟蹤和定位。此外,還提供了附加信息的傳遞入口,方便用戶進(jìn)行自定義信息染色,例如客戶端的執(zhí)行線程id等。期望在大家面臨類似痛點(diǎn)時(shí)提供一些實(shí)踐經(jīng)驗(yàn)和參考,也歡迎大家合適的場景下接入使用。

痛點(diǎn)

作為后端開發(fā),不可避免地與SQL打交道,一個(gè)大型復(fù)雜系統(tǒng)中往往會(huì)有大量的SQL語句支撐業(yè)務(wù),而且單表所涉及的不同SQL可能也多達(dá)幾十個(gè)甚至上百個(gè)。

當(dāng)看到一個(gè)SQL時(shí),如何快速識(shí)別這個(gè)SQL是哪塊業(yè)務(wù)的?具體是哪個(gè)方法走到了這個(gè)SQL?

這些SQL是憑個(gè)人大腦無法全部記住的,而且業(yè)務(wù)在不斷發(fā)展,SQL語句本身也在不斷地變化,可能明天增多一個(gè)表的join,后天增多了幾個(gè)where條件限制,大后天減少了幾個(gè)字段……

SQL本身也是支持動(dòng)態(tài)拼接形成,當(dāng)看到一個(gè)SQL時(shí),如何快速定位是來自哪塊具體業(yè)務(wù)?這是個(gè)問題,也是個(gè)難題。

以下面的報(bào)表查詢SQL為例:

SELECT
	COUNT( *)
FROM
	st_stock m
INNER JOIN st_lot_shelf_life slsl
ON
	m.tenant_code = slsl.tenant_code
	AND m.sku = slsl.sku
	AND m.lot_no = slsl.lot_no
	AND slsl.deleted = 0
WHERE
	m.deleted = 0
	AND m.stock_qty > 0
	AND m.warehouse_no = ?
	AND m.lot_no != '-1'
	AND m.owner_no IN(?)

我經(jīng)常會(huì)面臨這種根據(jù)SQL定位分析業(yè)務(wù)來源的問題,尤其是在慢SQL分析治理時(shí),往往會(huì)存在類似的痛點(diǎn)。

?

wKgZO2fHxriABriOAAiJsP2UtWA344.png

??

?

思路

我們?nèi)粘?吹揭恍┕ぷ魅藛T的制服上會(huì)配備姓名貼,這樣很有辨識(shí)度,通過姓名貼我們可以一看就可以看出來當(dāng)前的工作人員是哪位同事。

在此啟發(fā)下,我認(rèn)為對(duì)SQL也可以進(jìn)行一些染色標(biāo)記增強(qiáng),通過這些標(biāo)記可以一眼看出來這個(gè)SQL是哪些業(yè)務(wù)產(chǎn)生的。

我這里考慮采用MyBatis Plugini機(jī)制進(jìn)行SQL染色增強(qiáng),可以達(dá)到業(yè)務(wù)零侵入的效果:不改業(yè)務(wù)代碼、不改業(yè)務(wù)SQL,做到SQL無感增強(qiáng),自動(dòng)染色。

用什么來區(qū)分SQL的唯一性呢?這個(gè)區(qū)分的標(biāo)識(shí)區(qū)分度越高,越容易達(dá)到“一眼就看出來SQL來源”的效果。

對(duì)此,我采用SQL statement的id來作為唯一標(biāo)識(shí)。SQL statement是有兩部分組成:mapper namespace + SQL id,通過SQL statement的id基本上可以唯一確定程序中的SQL在mapper文件中的位置,順便可以找到對(duì)應(yīng)的DAO方法,及其追溯到上層調(diào)用來源和業(yè)務(wù)場景。

?

方案

?

wKgZPGfHxrmAJQosAAD8bcarvFs140.png

??

?

SQL染色增強(qiáng),這里是通過將附加信息作為SQL注釋,對(duì)SQL拼接改寫。

因?yàn)樵黾拥牟糠质荢QL注釋,不影響SQL的執(zhí)行正確性,也不會(huì)改寫SQL指紋,對(duì)于慢SQL排查定位、死鎖日志SQL排查都有幫助。

開整

這里是對(duì)SQL執(zhí)行前進(jìn)行染色增強(qiáng),所以攔截StatementHandler的StatementHandler方法即可。

wKgZPGfHxrqAOXvFAADZ89DzPWg881.png

??

?

SQL的修改核心代碼片段:

?

wKgZO2fHxruAPNtvAAFsbFwDeAY513.png

??

?

wKgZPGfHxryAUy9vAAE4DNgdlNI586.png

??

?

插件除了會(huì)自動(dòng)拼接statementId和pFinderId外,還預(yù)留了一個(gè)ThreadLocal變量,允許使用者執(zhí)行線程的上線文中向SQL傳遞附加信息,比如SQL的執(zhí)行用戶ERP、執(zhí)行線程的id等。

?

wKgZO2fHxr2AKZ-ZAANaCTIl8u4655.png

??

?

用法示例:

// 其他代碼
SQLMarkingThreadLocal.put("operator", UserInfoUtil.getUserCode());
// 其他代碼
SQLMarkingThreadLocal.remove();
// 其他代碼

用戶也可以通過自定義切面方式自動(dòng)賦值這些附加信息。

效果

?

wKgZPGfHxr-AWLJMAAOPUUr_gZQ520.png

??

?

2025-02-11 00:27:19.982 [http-nio-8082-exec-7] DEBUG [pfinderId:4630283.56667.17392048399060130] org.apache.ibatis.logging.jdbc.BaseJdbcLogger-debug:137 - c.j.w.s.i.j.r.d.S.selectStockShelfLifeReport
==> Preparing: SELECT m.id, m.sku, m.location_no locationNo, m.container_level_1 containerLevel1, m.container_level_2 containerLevel2, m.lot_no lotNo, m.sku_level skuLevel, m.owner_no ownerNo, m.pack_code packCode, m.stock_qty stockQty, m.prepicked_qty prePickedQty, m.premoved_qty preMovedQty, m.frozen_qty frozenQty, m.diff_qty diffQty, m.broken_qty brokenQty, m.status, m.create_time as createTime, m.update_time as updateTime, m.update_user as updateUser, m.create_user as createUser, stock_qty - (prepicked_qty + premoved_qty + frozen_qty + diff_qty + broken_qty) availableQty, (prepicked_qty + premoved_qty + frozen_qty + diff_qty + broken_qty) noAvailableQty, m.zone_no zoneNo, m.zone_type zoneType, slsl.shelf_life_status shelfLifeStatus, slsl.left_days leftDays, slsl.production_date productionDate, slsl.expiration_date expirationDate, slsl.shelf_life_days shelfLifeDays, slsl.warning_days warningDays, slsl.regular_advent_days regularAdventDays, slsl.urgent_advent_days urgentAdventDays, slsl.advent_days adventDays, slsl.extend_content extendContent FROM st_stock m INNER JOIN st_lot_shelf_life slsl ON m.tenant_code = slsl.tenant_code AND m.sku = slsl.sku AND m.lot_no = slsl.lot_no AND slsl.deleted = 0 WHERE m.deleted = 0 AND m.stock_qty > 0 AND m.warehouse_no = ? AND m.lot_no != '-1' LIMIT ? /* [SQLMarking] statementId: com.jdwl.wms.stock.infrastructure.jdbc.report.dao.StockShelfLifeReportDao.selectStockShelfLifeReport, pFinderId: 4630283.56667.17392048399060130, operator: guozhongqiang5, traceId: 59f48d4d-5346-4ffe-9837-693a090090fc */
2025-02-11 00:27:19.982 [http-nio-8082-exec-7] DEBUG [pfinderId:4630283.56667.17392048399060130] org.apache.ibatis.logging.jdbc.BaseJdbcLogger-debug:137 - c.j.w.s.i.j.r.d.S.selectStockShelfLifeReport
==> Parameters: 6_975(String), 10(Integer)
2025-02-11 00:27:19.988 [http-nio-8082-exec-7] DEBUG [pfinderId:4630283.56667.17392048399060130] org.apache.ibatis.logging.jdbc.BaseJdbcLogger-debug:137 - c.j.w.s.i.j.r.d.S.selectStockShelfLifeReport
<== Total: 10

?

SELECT
	m.id,
	m.sku,
	m.location_no locationNo,
	m.container_level_1 containerLevel1,
	m.container_level_2 containerLevel2,
	m.lot_no lotNo,
	m.sku_level skuLevel,
	m.owner_no ownerNo,
	m.pack_code packCode,
	m.stock_qty stockQty,
	m.prepicked_qty prePickedQty,
	m.premoved_qty preMovedQty,
	m.frozen_qty frozenQty,
	m.diff_qty diffQty,
	m.broken_qty brokenQty,
	m.status,
	m.create_time AS createTime,
	m.update_time AS updateTime,
	m.update_user AS updateUser,
	m.create_user AS createUser,
	stock_qty -(prepicked_qty + premoved_qty + frozen_qty + diff_qty + broken_qty) availableQty,
	(prepicked_qty + premoved_qty + frozen_qty + diff_qty + broken_qty) noAvailableQty,
	m.zone_no zoneNo,
	m.zone_type zoneType,
	slsl.shelf_life_status shelfLifeStatus,
	slsl.left_days leftDays,
	slsl.production_date productionDate,
	slsl.expiration_date expirationDate,
	slsl.shelf_life_days shelfLifeDays,
	slsl.warning_days warningDays,
	slsl.regular_advent_days regularAdventDays,
	slsl.urgent_advent_days urgentAdventDays,
	slsl.advent_days adventDays,
	slsl.extend_content extendContent
FROM
	st_stock m
INNER JOIN st_lot_shelf_life slsl
ON
	m.tenant_code = slsl.tenant_code
	AND m.sku = slsl.sku
	AND m.lot_no = slsl.lot_no
	AND slsl.deleted = 0
WHERE
	m.deleted = 0
	AND m.stock_qty > 0
	AND m.warehouse_no = ?
	AND m.lot_no != '-1' LIMIT ?
	/* [SQLMarking] statementId: com.jdwl.wms.stock.infrastructure.jdbc.report.dao.StockShelfLifeReportDao.selectStockShelfLifeReport, pFinderId: 4630283.56667.17392048399060130, operator: xxx, traceId: 59f48d4d-5346-4ffe-9837-693a090090fc */

?

通過這個(gè)染色標(biāo)記后的SQL我們可以一眼看出來,這個(gè)SQL是來自StockShelfLifeReportDao中的selectStockShelfLifeReport方法,其中StockShelfLifeReportDao對(duì)應(yīng)于mapper文件中的namespace,selectStockShelfLifeReport 對(duì)應(yīng)于 SQL id。

除了statementId和pFinderId外,還允許用戶在線程上下文中自定義傳輸一些附加信息到SQL中,并體現(xiàn)在SQL注釋信息中。

?

wKgZO2fHxsGAOYhIAAQS66e8DcI904.png

??

?

wKgZO2fHxsKAIGYAAAE0wT1T5_k281.png

??

?

?

wKgZPGfHxsSASmiIAARnnIHBXXs777.png

??

?

借助IDE的reference功能,我們可以很快找到調(diào)用入口:

?

wKgZO2fHxsaAbIZpAA0O8mLA0X0102.png

??

?

繼續(xù)向上追溯,流量源頭是來自一張報(bào)表查詢:

?

wKgZO2fHxsiAaaiCAAYPoq0G5wI559.png

??

?

?

性能影響

wKgZPGfHxsmAJZDbAAIJJCOUjuM568.png

??

既然是代理增強(qiáng),多少會(huì)有一些性能開銷,目前根據(jù)我這邊使用的情況來看,單個(gè)SQL基本上是0-1ms左右,個(gè)別在3-4ms,正常情況下,不會(huì)影響業(yè)務(wù)響應(yīng)時(shí)長。

?

支持情況

已支持的場景:

?使用MyBatis的SQL,包含select、insert、update、delete,同時(shí)也支持無where條件的SQL。支持MyBatis-Plus。

?

SELECT SQL效果:

SELECT
 COUNT(DISTINCT ito.transfer_order_no) AS qty
FROM
 inv_transfer_order AS ito
LEFT JOIN inv_transfer_order_detail itd
 ON
 ito.warehouse_no = itd.warehouse_no
  AND ito.transfer_order_no = itd.transfer_no
  AND itd.deleted = 0
WHERE
 ito.deleted = 0
 AND ito.warehouse_no = ?
 AND ito.transfer_status IN(?, ?, ?, ?, ?, ?, ?, ?)
  /* [SQLMarking] statementId: com.jdwl.wms.inventory.xxx.infrastructure.jdbc.dao.TransferOrderDao.selectOverstockOrderQty, pFinderId: 4900300.56689.17397685906403801, traceId: abc53cd3-e814-451e-a771-5d8caae861a7, operator: xxx */

?

UPDATE SQL效果:

UPDATE
 inv_transfer_task_detail
 SET
 task_status = ?,
 task_user = ?,
 update_user = ?,
 update_time = now(),
 receive_time = now()
WHERE
 warehouse_no = ?
 AND deleted = 0
 AND order_detail_id IN(?)
 AND task_status IN(?, ?, ?)
 /* [SQLMarking] statementId: com.jdwl.wms.inventory.xxx.infrastructure.jdbc.dao.TransferTaskDetailDao.updateStatusAndTaskUserByOrderDetailAndStatus, pFinderId: 4900300.56689.17397685881342999, traceId: 41366c16-2e10-4c45-a10c-c84326e201b4, operator: xxx */

?

INSERT SQL效果:

INSERT
INTO
	inv_transfer_task_result
	(
		id,
		result_no,
		transfer_type,
		task_type,
		location_no,
		container_level_1,
		container_level_2,
		container_full,
		extend_content,
		warehouse_no,
		create_user,
		create_time,
		update_user,
		update_time,
		task_no,
		tenant_code
	)
	VALUES
	(
		?,
		?,
		?,
		?,
		?,
		?,
		?,
		?,
		?,
		?,
		?,
		now(),
		?,
		now(),
		?,
		'TC26473419'
	)
	/* [SQLMarking] statementId: com.jdwl.wms.inventory.xxx.infrastructure.jdbc.dao.TransferTaskResultDao.insert, pFinderId: 4900300.56689.17397685845562352, traceId: 7cc0eebf-c4c5-4fc1-b5de-ae1f14ba29ba, operator: xxx */

?

無WHERE條件的SQL效果:

SELECT NOW()
/* [SQLMarking] statementId: com.jdwl.wms.stock.xxx.jdbc.main.dao.StockQueryDao.dbTime, pFinderId: 2033056.56579.17392526509236705 */

?

該插件暫不支持的場景如下:

?ORM非MyBatis的SQL,例如通過 connection statement execute 操作的SQL,通過JdbcTemplate 操作的SQL等。

?

線上SQL的排查定位使用案例

?

慢SQL分析

wKgZO2fHxsuAKu0GAAiTsBs9RgI089.png

??

?

會(huì)話管理

wKgZPGfHxs2AAUXRAASKXjftv_8950.png

??

?

wKgZO2fHxs-ABRjLAAWD9Gd2k6A207.png

??

?

PFinder SQL分析

wKgZO2fHxtGAeiNNAAgej1hJHw0465.png

??

?

如何接入?

如果小伙伴也有類似痛點(diǎn)和使用訴求,可以接入這個(gè)簡易的SQL染色標(biāo)記插件。

目前該組件已在多個(gè)大型復(fù)雜系統(tǒng)的生產(chǎn)環(huán)境中接入使用,大家可以先在測試、UAT環(huán)境接入試用,然后再逐步推廣線上生產(chǎn)環(huán)境。

接入方法也非常簡單,如下。

1、引入Maven坐標(biāo):


    com.jd.sword
    sword-mybatis-plugins
    1.0.2-SNAPSHOT
    
        
            org.mybatis
            mybatis
        
        
            org.projectlombok
            lombok
        
        
            org.apache.commons
            commons-lang3
        
        
            org.slf4j
            slf4j-api
        
    



對(duì)于其中的間接依賴,例如lombok等,大家可以使用自己工程中的已有依賴,在這里可以通過exclusion排掉,如果自己工程中沒有這些依賴,可以不exclusion。

2、在mybatis config xml中引入SQLMarking插件:



    
    


FAQ

1、支持 Mybatis-Plus 嗎?

答:支持,Mybatis-Plus是在MyBatis基礎(chǔ)上的增強(qiáng),MyBatis插件可以得到執(zhí)行。

?

2、SQLMarking Plugin 在 plugins中的位置有嚴(yán)格要求嗎,比如必須第一個(gè)位置?

答:沒有嚴(yán)格要求,理論上放上放下都可以。有的小伙伴工程里依賴了多種 MyBatis Plugin,多種Plugin之間可能會(huì)有沖突,比如有些 Plugin 會(huì)對(duì)SQL的開頭INSERT/SELECT/UPDATE/DELETE關(guān)鍵詞進(jìn)行前綴判斷,大家如果遇到報(bào)錯(cuò)可以靈活調(diào)整 SQLMarking Plugin 的位置,向上或向下調(diào)整,不一定非得放在第一個(gè)位置。

?

3、報(bào)錯(cuò)信息:There is no getter for property named 'delegate' in 'class com.sun.proxy.$Proxy211'

答:這種是多個(gè)插件之間有先后順序依賴,別的插件先行執(zhí)行,影響了delegate的獲取,調(diào)整 SQLMarking Plugin 的位置,向上或向下調(diào)整,可解決沖突。

?

4、報(bào)錯(cuò)信息關(guān)鍵詞:NoClassDefFoundError RoutingStatementHandlerUtils

答:缺少依賴,添加以下依賴:


	mybatis-plugins
	mybatis-plugins
	2.2.3

?

5、染色信息中如何添加一些個(gè)性化的附加信息?

答:可以用下這個(gè)

SQLMarkingThreadLocal.put(key, value)

SQL 執(zhí)行完 remove 掉。一個(gè)方法同時(shí)執(zhí)行多個(gè)SQL時(shí),如果 SQLMarkingThreadLocal 可共享,也可以在方法維度上 put 和 remove,就不用每個(gè)SQL put remove一下。主要是看線程上下文是否應(yīng)該傳遞SQLMarkingThreadLocal的信息。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    807

    瀏覽量

    46905
  • mybatis
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    7172
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    MySQL 刪庫后怎么恢復(fù)?binlog2sql 之外,NineData 還能做什么

    很多團(tuán)隊(duì)遇到 MySQL 誤刪、誤更新時(shí),第反應(yīng)都是搜 binlog2sql。它確實(shí)能解決部分問題,但企業(yè)生產(chǎn)環(huán)境中真正缺的,往往不是單點(diǎn)回滾腳本,而是從變更提交、預(yù)檢、審批、執(zhí)行到追蹤和回滾
    的頭像 發(fā)表于 04-15 11:49 ?29次閱讀
    MySQL 刪庫后怎么恢復(fù)?binlog2<b class='flag-5'>sql</b> 之外,NineData 還能做什么

    NineData SQL AI 智能補(bǔ)全上線:寫 SQL,不必每次都從頭敲

    NineData推出SQLAI智能補(bǔ)全功能,通過AI技術(shù)實(shí)現(xiàn)上下文感知的SQL語句智能提示。該功能不僅能補(bǔ)全關(guān)鍵字,還能根據(jù)當(dāng)前輸入內(nèi)容預(yù)測后續(xù)查詢意圖,顯著提升多表關(guān)聯(lián)、復(fù)雜條件等場景下的編寫效率
    的頭像 發(fā)表于 04-01 20:19 ?247次閱讀
    NineData <b class='flag-5'>SQL</b> AI 智能補(bǔ)全上線:寫 <b class='flag-5'>SQL</b>,不必每次都從頭敲

    SQL分析選型:DMS/DAS與NineData該如何選擇

    阿里云 DMS 的慢SQL 趨勢(shì)、DAS 的 SQL 審計(jì)能力成熟,可滿足阿里云用戶基礎(chǔ)需求。NineData 側(cè)重跨云統(tǒng)工作臺(tái)、研發(fā)與 DBA 協(xié)同,打通慢日志分析、性能診斷、規(guī)范審核、索引建議全鏈路,更適配企業(yè)級(jí)慢查詢持續(xù)
    的頭像 發(fā)表于 03-25 17:20 ?1517次閱讀
    慢<b class='flag-5'>SQL</b>分析選型:DMS/DAS與NineData該如何選擇

    NineData 社區(qū)版的慢SQL分析,比查看日志+看EXPLAIN適合中小團(tuán)隊(duì)

    度分析,定位問題后還可銜接后續(xù)操作。且其支持 Docker 單機(jī)本地內(nèi)網(wǎng)部署,10 個(gè)數(shù)據(jù)源額度適合中小團(tuán)隊(duì),優(yōu)化慢 SQL 處理流程。
    的頭像 發(fā)表于 03-17 14:07 ?104次閱讀
    NineData 社區(qū)版的慢<b class='flag-5'>SQL</b>分析,比查看日志+看EXPLAIN適合中小團(tuán)隊(duì)

    MySQL 慢 SQL 排查這件事,NineData 社區(qū)VS DBeaver/ Navicat 技術(shù)分析

    社區(qū)版的定位不同,它是免費(fèi)、本地化部署的數(shù)據(jù)管理平臺(tái),將數(shù)據(jù)庫 DevOps、數(shù)據(jù)復(fù)制、數(shù)據(jù)庫對(duì)比三大能力整合于體。 在 MySQL 慢 SQL 這條鏈路里,它用到的是 DevOps 中的慢查詢分析
    的頭像 發(fā)表于 03-17 11:53 ?111次閱讀
    MySQL 慢 <b class='flag-5'>SQL</b> 排查這件事,NineData 社區(qū)VS DBeaver/ Navicat 技術(shù)分析

    SonarQube代碼質(zhì)量管理平臺(tái)詳解

    代碼質(zhì)量問題是技術(shù)債務(wù)的主要來源個(gè)未被發(fā)現(xiàn)的空指針異??赡茉谏a(chǎn)環(huán)境導(dǎo)致服務(wù)崩潰,段存在SQL注入漏洞的
    的頭像 發(fā)表于 03-11 09:40 ?394次閱讀

    雷達(dá)LD2451如何“一眼看三車道”

    在智能交通與車輛感知領(lǐng)域,感知距離、調(diào)試便捷性與場景適應(yīng)性,是衡量一款雷達(dá)模組是否實(shí)用的關(guān)鍵指標(biāo)。深圳市海凌科電子推出的HLK-LD245124GHz車輛狀態(tài)檢測模組,不僅實(shí)現(xiàn)了最遠(yuǎn)超過100米的超
    的頭像 發(fā)表于 12-15 11:46 ?667次閱讀
    雷達(dá)LD2451如何“<b class='flag-5'>一眼</b>看三車道”

    使用NVIDIA Nemotron RAG和Microsoft SQL Server 2025構(gòu)建高性能AI應(yīng)用

    在 Microsoft Ignite 2025 大會(huì)上,隨著 Microsoft SQL Server 2025 的發(fā)布,AI 就緒型企業(yè)數(shù)據(jù)庫愿景成為現(xiàn)實(shí),為開發(fā)者提供強(qiáng)大的新工具,例如內(nèi)置向量
    的頭像 發(fā)表于 12-01 09:31 ?989次閱讀
    使用NVIDIA Nemotron RAG和Microsoft <b class='flag-5'>SQL</b> Server 2025構(gòu)建高性能AI應(yīng)用

    數(shù)據(jù)庫慢查詢分析與SQL優(yōu)化實(shí)戰(zhàn)技巧

    今天,我將分享我在處理數(shù)千次數(shù)據(jù)庫性能問題中積累的實(shí)戰(zhàn)經(jīng)驗(yàn),幫助你系統(tǒng)掌握慢查詢分析與SQL優(yōu)化的核心技巧。無論你是剛?cè)腴T的運(yùn)維新手,還是有定經(jīng)驗(yàn)的工程師,這篇文章都將為你提供實(shí)用的解決方案。
    的頭像 發(fā)表于 09-08 09:34 ?1200次閱讀

    FLIR Route Creator插件在工業(yè)檢測中的優(yōu)勢(shì)

    FLIR Route Creator是一款專為FLIR Thermal Studio Pro分析軟件設(shè)計(jì)的插件,它巧妙地將高精度與簡易操作相結(jié)合,為熱成像檢測領(lǐng)域帶來了革命性的變化。
    的頭像 發(fā)表于 08-22 10:46 ?854次閱讀

    SQL 通用數(shù)據(jù)類型

    data type. SQL 開發(fā)人員必須在創(chuàng)建 SQL 表時(shí)決定表中的每個(gè)列將要存儲(chǔ)的數(shù)據(jù)的類型。數(shù)據(jù)類型是個(gè)標(biāo)簽,是便于 SQL 了解每個(gè)列期望存儲(chǔ)什么類型的數(shù)據(jù)的指南,它也標(biāo)
    的頭像 發(fā)表于 08-18 09:46 ?834次閱讀

    Text2SQL準(zhǔn)確率暴漲22.6%!3大維度全拆

    摘要 技術(shù)背景:Text2SQL 是將自然語言查詢轉(zhuǎn)為 SQL 的任務(wù),經(jīng)歷了基于規(guī)則、神經(jīng)網(wǎng)絡(luò)、預(yù)訓(xùn)練語言模型、大語言模型四個(gè)階段。當(dāng)前面臨提示優(yōu)化、模型訓(xùn)練、推理時(shí)增強(qiáng)三大難題,研究
    的頭像 發(fā)表于 08-14 11:17 ?806次閱讀
    Text2<b class='flag-5'>SQL</b>準(zhǔn)確率暴漲22.6%!3大維度全拆

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫被加密如何恢復(fù)數(shù)據(jù)?

    SQL Server數(shù)據(jù)庫故障: SQL Server數(shù)據(jù)庫被加密,無法使用。 數(shù)據(jù)庫MDF、LDF、log日志文件名字被篡改。
    的頭像 發(fā)表于 06-25 13:54 ?808次閱讀
    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—<b class='flag-5'>SQL</b> Server數(shù)據(jù)庫被加密如何恢復(fù)數(shù)據(jù)?

    達(dá)夢(mèng)數(shù)據(jù)庫常用管理SQL命令詳解

    達(dá)夢(mèng)數(shù)據(jù)庫常用管理SQL命令詳解
    的頭像 發(fā)表于 06-17 15:12 ?7582次閱讀
    達(dá)夢(mèng)數(shù)據(jù)庫常用管理<b class='flag-5'>SQL</b>命令詳解

    大促數(shù)據(jù)庫壓力激增,如何一眼定位 SQL 執(zhí)行來源?

    語句成為了性能瓶頸。面對(duì)這樣的困境,本篇文章提出了對(duì) SQL 進(jìn)行 “染色” 的方法來幫助大家 一眼定位問題 SQL,而無需再在多處邏輯中
    的頭像 發(fā)表于 06-10 11:32 ?644次閱讀
    大促數(shù)據(jù)庫壓力激增,如何<b class='flag-5'>一眼</b><b class='flag-5'>定位</b> <b class='flag-5'>SQL</b> 執(zhí)行<b class='flag-5'>來源</b>?
    旌德县| 泰兴市| 陆川县| 商洛市| 册亨县| 怀化市| 政和县| 闻喜县| 泽普县| 清镇市| 东山县| 宣武区| 蒙山县| 泰兴市| 延川县| 固始县| 唐山市| 淳化县| 民权县| 西乌| 兴安县| 台安县| 周至县| 永新县| 云林县| 广丰县| 米泉市| 友谊县| 夹江县| 安平县| 利川市| 舟曲县| 泗洪县| 县级市| 富锦市| 五指山市| 应用必备| 临湘市| 宜川县| 永和县| 嘉善县|