最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

聊聊Navicat統(tǒng)計(jì)的行數(shù)竟然和表實(shí)際行數(shù)不一致的問(wèn)題

 更新時(shí)間:2021年12月03日 08:54:14   作者:Coder小明  
Navicat作為數(shù)據(jù)庫(kù)管理工具,在業(yè)界廣受歡迎,這篇文章主要介紹了Navicat統(tǒng)計(jì)的行數(shù)竟然和表實(shí)際行數(shù)不一致的問(wèn)題,需要的朋友可以參考下

背景

近期為了保障線上數(shù)據(jù)庫(kù)的穩(wěn)定性,我決定針對(duì)一些大表的歷史數(shù)據(jù)有計(jì)劃地進(jìn)行備份遷移,但是呢,發(fā)現(xiàn)一個(gè)奇特的現(xiàn)象,Navicat統(tǒng)計(jì)行數(shù)和表自身count統(tǒng)計(jì)數(shù)竟然不一致???0.0

Navicat

Navicat作為數(shù)據(jù)庫(kù)管理工具,在業(yè)界廣受歡迎,先甭管你電腦上現(xiàn)在正在運(yùn)行的Navicat是正版還是盜版(你不說(shuō)我也知道),不可否認(rèn)的是,在我從事17年從事后端開(kāi)發(fā)以來(lái),嘗試了很多同類工具,Navicat在功能上完全碾壓其他數(shù)據(jù)庫(kù)管理工具,尤其是細(xì)節(jié)方面,在這里不一一列舉了,總之一個(gè)字,就是很好用(不接受反駁,除非你說(shuō)出來(lái)一個(gè)讓我心服口服的工具)。

整個(gè)經(jīng)過(guò)

這次大表遷移備份,我的整體思路是:首先用Navicat對(duì)庫(kù)內(nèi)所有的表按照行數(shù)降序排序,然后選取Top10進(jìn)行遷移備份。但是一如既往細(xì)心的我發(fā)現(xiàn),它界面的統(tǒng)計(jì)行數(shù)竟然和我自己count這張表行數(shù)不一致?!難道要顛覆我對(duì)Navicat的認(rèn)可嘛。

select count(1) from big_table_name;

為什么呢?

這讓我很是詫異,一度以為自己出現(xiàn)了幻覺(jué),再三確認(rèn)自己沒(méi)有帶VR眼鏡后,我踏上了尋找答案的征程。我開(kāi)始思考,Mysql作為一個(gè)數(shù)據(jù)庫(kù),自身肯定就有各個(gè)表的統(tǒng)計(jì),而Navicat只是作為一個(gè)可視化界面,讓數(shù)據(jù)肉眼可見(jiàn)。

Navicat:這鍋我可不背。

為了證實(shí)我的猜想,我查閱了官方文檔及其他相關(guān)資料,果然,MySQL 在 information_schema.TABLES表中息存放了所有表的信息。

select * from information_schema.TABLES;

查看了這張表以后,發(fā)現(xiàn)表里統(tǒng)計(jì)記錄TABLE_ROWS字段的確實(shí)與事實(shí)count不符……

這又是為什么呢?

我又陷入了沉思,帶著疑惑,繼續(xù)翻閱著文檔,突然,看到MySQL官方文檔對(duì)TABLE_ROWS的解釋:

The number of rows. Some storage engines, such as MyISAM, store the exact count. For other storage engines, such as InnoDB, this value is an approximation, and may vary from the actual value by as much as 40% to 50%. In such cases, use SELECT COUNT(*) to obtain an accurate count.

看了這段話我頓悟啦,你是不是也明白怎么回事啦。什么?你沒(méi)看太明白?好吧,沒(méi)關(guān)系,你可能需要通過(guò)翻譯軟件的直譯+理解,才懂得其中真正的含義。原來(lái),TABLE_ROWS這個(gè)字段不同存儲(chǔ)引擎的計(jì)數(shù)規(guī)則不一致,比如MyISAM引擎這表存儲(chǔ)TABLE_ROWS存儲(chǔ)的就是精確的行數(shù),而對(duì)于其他的存儲(chǔ)引擎,比如 InnoDB,這個(gè)值只是一個(gè)近似值,與實(shí)際值相差40%-50%左右。所以,在這種情況下,我們想要得到一個(gè)準(zhǔn)確的計(jì)數(shù),只能使用 SELECT COUNT(*) 來(lái)獲得。

那又如何修正呢?

雖然疑惑得到了解答。但,和我一樣有強(qiáng)迫癥的朋友肯定會(huì)問(wèn),如何修正這個(gè)值呢?真是知道越多,未知越多,網(wǎng)上說(shuō)可以通過(guò)

Analyze table big_table_name

得以更正這個(gè)數(shù)據(jù),但是我動(dòng)手執(zhí)行之后發(fā)現(xiàn),并不能更正數(shù)據(jù),且該操作不僅耗時(shí)還會(huì)鎖表,并不推薦使用……說(shuō)到這,我的強(qiáng)迫癥竟然不治自愈了。

到此這篇關(guān)于Navicat統(tǒng)計(jì)的行數(shù)竟然和表實(shí)際行數(shù)不一致的文章就介紹到這了,更多相關(guān)Navicat行數(shù)不一致內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • navicat如何執(zhí)行.sql文件

    navicat如何執(zhí)行.sql文件

    這篇文章主要介紹了navicat如何執(zhí)行.sql文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 數(shù)據(jù)庫(kù)刪除完全重復(fù)和部分關(guān)鍵字段重復(fù)的記錄

    數(shù)據(jù)庫(kù)刪除完全重復(fù)和部分關(guān)鍵字段重復(fù)的記錄

    重復(fù)記錄分為兩種,第一種是完全重復(fù)的記錄,也就是所有字段均重復(fù)的記錄,第二種是部分關(guān)鍵字段重復(fù)的記錄,例如Name字段重復(fù),而其它字段不一定重復(fù)或都重復(fù)。
    2008-05-05
  • 關(guān)于關(guān)系數(shù)據(jù)庫(kù)如何快速查詢表的記錄數(shù)詳解

    關(guān)于關(guān)系數(shù)據(jù)庫(kù)如何快速查詢表的記錄數(shù)詳解

    這篇文章主要給大家介紹了關(guān)于關(guān)系數(shù)據(jù)庫(kù)如何快速查詢表的記錄數(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用關(guān)系數(shù)據(jù)庫(kù)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 利用SQL腳本導(dǎo)入數(shù)據(jù)到不同數(shù)據(jù)庫(kù)避免重復(fù)的3種方法

    利用SQL腳本導(dǎo)入數(shù)據(jù)到不同數(shù)據(jù)庫(kù)避免重復(fù)的3種方法

    這篇文章主要給大家介紹了關(guān)于利用SQL腳本導(dǎo)入數(shù)據(jù)到不同數(shù)據(jù)庫(kù)避免重復(fù)的3種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • SQL中游標(biāo)(cursor)的基本使用實(shí)例

    SQL中游標(biāo)(cursor)的基本使用實(shí)例

    當(dāng)你檢索的數(shù)據(jù)只是一條記錄時(shí),你所編寫的事務(wù)語(yǔ)句代碼往往使用SELECT INSERT語(yǔ)句,但如果從某一結(jié)果集中逐一地讀取一條記錄呢?游標(biāo)為我們提供了一種極為優(yōu)秀的解決方案,這篇文章主要給大家介紹了關(guān)于SQL中游標(biāo)(cursor)基本使用的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • SQLServer中exists和except用法介紹

    SQLServer中exists和except用法介紹

    大家好,本篇文章主要講的是SQLServer中exists和except用法介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下哦
    2021-12-12
  • 微信使用?SQLite?保存聊天記錄的原因分析

    微信使用?SQLite?保存聊天記錄的原因分析

    SQLite的SQL方言也非常強(qiáng)大,它比MySQL早四年就開(kāi)始支持with語(yǔ)句,本文將介紹SQLite在2018年新增加的SQL功能,也就是SQLite從版本3.22.0到3.26.0所新增加的SQL功能,感興趣的朋友一起看看吧
    2023-07-07
  • explain慢查詢SQL調(diào)優(yōu)exists的實(shí)戰(zhàn)

    explain慢查詢SQL調(diào)優(yōu)exists的實(shí)戰(zhàn)

    這篇文章主要介紹了explain慢查詢SQL調(diào)優(yōu)exists的實(shí)戰(zhàn),經(jīng)過(guò)兩次優(yōu)化SQL語(yǔ)句之后,慢SQL的性能顯著提升了,耗時(shí)從8s優(yōu)化到了0.7s,現(xiàn)在拿出來(lái)給大家分享一下,希望對(duì)你會(huì)有所幫助
    2023-12-12
  • Navicat最新版安裝詳細(xì)教程(超簡(jiǎn)單)

    Navicat最新版安裝詳細(xì)教程(超簡(jiǎn)單)

    Navicat最新版增加Redis連接功能,支持多種數(shù)據(jù)庫(kù)管理,安裝步驟包括下載、解壓、復(fù)制dll文件和啟動(dòng)軟件,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • 梧桐數(shù)據(jù)庫(kù)與`mysql`及`oracle`關(guān)于交換服務(wù)器編號(hào)的`SQL`寫法分析(推薦)

    梧桐數(shù)據(jù)庫(kù)與`mysql`及`oracle`關(guān)于交換服務(wù)器編號(hào)的`SQL`寫法分析(推薦)

    本文介紹了如何通過(guò)SQL查詢實(shí)現(xiàn)服務(wù)器編號(hào)的交換操作,以優(yōu)化數(shù)據(jù)中心內(nèi)部服務(wù)器的布局,文章說(shuō)明了不同數(shù)據(jù)庫(kù)(如梧桐數(shù)據(jù)庫(kù)、MySQL和Oracle)的建表語(yǔ)句、數(shù)據(jù)插入以及SQL實(shí)現(xiàn)思路,通過(guò)具體的SQL查詢,文章展示了如何在不同數(shù)據(jù)庫(kù)中交換服務(wù)器編號(hào),并解釋了每個(gè)部分的功能
    2024-11-11

最新評(píng)論

改则县| 绩溪县| 连山| 繁昌县| 南阳市| 沂源县| 广东省| 汉寿县| 桃源县| 天长市| 中阳县| 正宁县| 芦山县| 桐乡市| 图们市| 彭阳县| 浠水县| 五家渠市| 张掖市| 恭城| 鄄城县| 潼关县| 鲁山县| 慈溪市| 西吉县| 赤峰市| 南安市| 井研县| 专栏| 怀宁县| 陆良县| 郎溪县| 莎车县| 闽侯县| 东方市| 平罗县| 唐海县| 阿城市| 莲花县| 上高县| 永城市|