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

Mysql中Row size too large (> 8126) 錯(cuò)誤的問(wèn)題解決

 更新時(shí)間:2024年07月29日 09:35:10   作者:秋刀prince  
本文主要介紹了Mysql中Row size too large (> 8126) 錯(cuò)誤的問(wèn)題解決,原因?qū)嵅迦氲男袛?shù)據(jù)可能太大了,超過(guò)了設(shè)定的闕值,下面就來(lái)看一下如何解決

問(wèn)題發(fā)現(xiàn)

今天在導(dǎo)入他人項(xiàng)目中的sql數(shù)據(jù)庫(kù)文件時(shí),出現(xiàn)一個(gè)mysql的錯(cuò)誤提示,大致描述是:
Row size too large (> 8126),英文不算好的我看字面意思,估摸著大概就是說(shuō)我們插入的行數(shù)據(jù)可能太大了,超過(guò)了設(shè)定的闕值;

一、問(wèn)題導(dǎo)致的可能原因

這個(gè)限制主要是因?yàn)?code>MySQL內(nèi)部存儲(chǔ)機(jī)制的約束,MySQL的InnoDB存儲(chǔ)引擎有一個(gè)最大行大小限制關(guān)于mysql引擎內(nèi)容比較多,以后再專門(mén)寫(xiě)一篇內(nèi)容好好說(shuō)說(shuō);這里我們只需要知道他是目前mysql 默認(rèn)的存儲(chǔ)引擎就好啦;

而這個(gè)最大行大小限制主要由于幾個(gè)因素影響:

1、頁(yè)大小

頁(yè)是InnoDB管理數(shù)據(jù)的最小單位,InnoDB使用16KB的頁(yè)來(lái)存儲(chǔ)數(shù)據(jù),行數(shù)據(jù)在進(jìn)行保存插入的時(shí)候,要求我們的單行數(shù)據(jù)不能跨越多于半個(gè)頁(yè)(8KB)。否則數(shù)據(jù)庫(kù)會(huì)自動(dòng)按照是否進(jìn)行溢出頁(yè)的機(jī)制來(lái)處理數(shù)據(jù);
簡(jiǎn)單說(shuō)的話,其實(shí)就是數(shù)據(jù)庫(kù)中的每行數(shù)據(jù)我們可以看作是一所個(gè)人專屬的小房子,里面預(yù)留了一個(gè)固定的空間給他們放東西,如果放入的東西太多了,超過(guò)這個(gè)空間大小,屋主就會(huì)考慮是否可以把東西放在屋外,來(lái)保障空間不至于太過(guò)擁擠,這里的房間內(nèi)的空間就是頁(yè)內(nèi)空間大小,房外就是多出的

2、行格式

InnoDB支持幾種行格式,如compact、redundant、dynamic和compressed。其中,dynamic和compressed格式是為了解決行大小限制而引入的,允許行中的某些列(如BLOB和TEXT類型)存儲(chǔ)在頁(yè)外。
這點(diǎn)簡(jiǎn)單的來(lái)說(shuō),四種行格式可以看作是房屋管理辦法四個(gè)準(zhǔn)則,每個(gè)準(zhǔn)則都有各自適用的場(chǎng)景和優(yōu)點(diǎn);

關(guān)于行格式,我們這里只需要知道有哪幾種,以及他們數(shù)據(jù)存儲(chǔ)方式,各自應(yīng)用場(chǎng)景即可;

2.1 compact格式

InnoDB的默認(rèn)行格式,也是最常用常見(jiàn)的格式;采取的是位圖壓縮的存儲(chǔ)方式;適用于大多數(shù)OLTP(在線事務(wù)處理應(yīng)用場(chǎng)景。OLTP其實(shí)就是指那種較高并發(fā),并且要求低延遲,專注業(yè)務(wù)操作的應(yīng)用,類似銀行交易、訂單處理、庫(kù)存更新那些情況比較常用;

2.2 Redundant格式

MySQL 5.0以前的默認(rèn)行格式;適用具有大量NULL值的表;

2.3 Dynamic格式

從 MySQL 5.6.3 開(kāi)始,默認(rèn)的行格式是 DYNAMIC,Dynamic行格式具有高度的靈活性,可以動(dòng)態(tài)地調(diào)整行的大小和存儲(chǔ)方式。基于實(shí)際數(shù)據(jù)長(zhǎng)度大小來(lái)進(jìn)行調(diào)整存儲(chǔ)空間,以節(jié)省存儲(chǔ)空間;適用于包含大量長(zhǎng)度可變列的表,例如包含TEXT、BLOB等大型字段的表。

2.4 Compressed格式

Compressed行格式采用壓縮存儲(chǔ)方式,它適用于存儲(chǔ)大量重復(fù)數(shù)據(jù)或較大的表。Compressed行格式使用多種壓縮算法,如Zlib和LZO等,能夠顯著減少磁盤(pán)I/O操作,提高存儲(chǔ)和讀取性能

3、BLOB和TEXT列

這點(diǎn)因素與上面那點(diǎn)有關(guān),Blob 和 Text 是mysql中的大數(shù)據(jù)存儲(chǔ)類型,但是在我們不設(shè)置行模式為ynamic和compressed的時(shí)候,這些列通常存儲(chǔ)在頁(yè)外,但它們的元數(shù)據(jù)(如長(zhǎng)度)仍然存儲(chǔ)在行內(nèi),而這個(gè)存儲(chǔ)的大小行格式的設(shè)置會(huì)有所不同。也就是說(shuō)明他會(huì)計(jì)入行大小限制的計(jì)算

二、解決辦法

好了,既然知道問(wèn)題原因的可能了,現(xiàn)在就是開(kāi)始如何解決了;

1、修改頁(yè)大?。ú煌扑])

雖然mysql InnoDB的引擎默認(rèn)的頁(yè)大小是16KB,但是這個(gè)值并不是不能修改,修改配置文件;
添加或修改innodb_page_size參數(shù)來(lái)設(shè)置新的頁(yè)大小。例如,innodb_page_size = 16384(以字節(jié)為單位,對(duì)應(yīng)16KB),或者設(shè)置的更大;
不過(guò)需要注意的是:頁(yè)大小的調(diào)整最好是在數(shù)據(jù)庫(kù)初始化的初期去設(shè)置,一旦數(shù)據(jù)庫(kù)初始化完成后,就不建議更改了,這種情況下意味著你原來(lái)已經(jīng)存在的所有ibdata和ib_logfile文件都需要重建,那就不是很合適了,而且這樣做也可能會(huì)帶來(lái)一定的性能影響;

2、修改行格式

既然dynamic和compressed行格式就是為了解決行大小限制而引入的,我們可以修改該格式即可;當(dāng)然了,我們也不是都要去修改這個(gè),這個(gè)也是和我們的mysql版本有關(guān)的;

從 MySQL 5.6.3 開(kāi)始,默認(rèn)的行格式是 DYNAMIC,也就是說(shuō),其實(shí)在這個(gè)版本之后的我們其實(shí)就不需要修改行格式了;
不過(guò)如果你和博主一樣是通過(guò)導(dǎo)入sql文件的方式創(chuàng)建的表的話,需要確認(rèn)你的sql文件中是否有另外定義行格式;例如:

在這里插入圖片描述

博主雖然數(shù)據(jù)庫(kù)是8.0+,默認(rèn)行模式已經(jīng)是DYNAMIC,但是對(duì)方給的sql文件創(chuàng)建表的語(yǔ)句中指定了Compact行格式,這個(gè)原因大概率是因?yàn)樗趯?dǎo)出時(shí)候環(huán)境是基于mysql5.x,而博主是8.0+的,所以這里導(dǎo)出的時(shí)候會(huì)有所出入;這里我講所有的行模式設(shè)置都去掉了,默認(rèn)就會(huì)按照DYNAMIC設(shè)置,就不會(huì)報(bào)錯(cuò)了;因此我們?cè)谧霾煌姹緈ysql的數(shù)據(jù)導(dǎo)入與導(dǎo)出時(shí),需要特別小心版本不同帶來(lái)的影響

3、修改數(shù)據(jù)類型為BLOB和TEXT列

如果你本來(lái)該字段就會(huì)需要存儲(chǔ)較大的數(shù)據(jù),就應(yīng)該用blob和text來(lái)替換原來(lái)的數(shù)據(jù)類型VARCHAR或CHAR,這樣能讓數(shù)據(jù)大部分存儲(chǔ)在溢出頁(yè)中,而不去納入大小限制的值計(jì)算;而如果我們之前設(shè)置了行模式的話,這個(gè)納入計(jì)算的值占用會(huì)更??;

4、其他優(yōu)化方式(可以參考使用)

4.1 合理設(shè)置數(shù)據(jù)類型大小

在進(jìn)行表設(shè)計(jì)時(shí)候,一些列字段我們根據(jù)實(shí)際需要設(shè)計(jì),例如varchar數(shù)據(jù)類型,如果實(shí)際存儲(chǔ)值不大,長(zhǎng)度就定義足夠空間大小即可(即能用varchar64就不用varchar128,能用128就不要用256,盡可能合理分配空間);

4.2 合理進(jìn)行表結(jié)構(gòu)設(shè)計(jì)

如果設(shè)計(jì)表的時(shí)候,單表列盡量不要太多,適當(dāng)?shù)倪M(jìn)行拆表將列分出去,也能在一定橫渡上避免問(wèn)題;

4.3 更換存儲(chǔ)引擎

換另一種存儲(chǔ)引擎,這個(gè)方法的話見(jiàn)仁見(jiàn)智,要根據(jù)自己的業(yè)務(wù)場(chǎng)景來(lái)抉擇了,比如MyISAM引擎最大的缺點(diǎn)就是它不支持事務(wù)和高并發(fā),所以才使得大多數(shù)情況下我們?nèi)匀辉谟肐nnoDB引擎的原因,雖然它讀寫(xiě)性能上并沒(méi)有前者優(yōu)秀;

到此這篇關(guān)于Mysql中Row size too large (> 8126) 錯(cuò)誤的問(wèn)題解決的文章就介紹到這了,更多相關(guān)Mysql Row size too large (> 8126) 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql中max_allowed_packet參數(shù)的配置方法(避免大數(shù)據(jù)寫(xiě)入或者更新失?。? src=

    mysql中max_allowed_packet參數(shù)的配置方法(避免大數(shù)據(jù)寫(xiě)入或者更新失敗)

    這篇文章主要介紹了mysql中max_allowed_packet參數(shù)的配置方法,以及查看max_allowed_packet參數(shù)當(dāng)前值的方法,需要的朋友可以參考下
    2014-05-05
  • mysql decimal數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn)

    mysql decimal數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn)

    這篇文章主要介紹了mysql decimal數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • MYSQL 刪除一個(gè)字段前判斷字段是否存在的辦法

    MYSQL 刪除一個(gè)字段前判斷字段是否存在的辦法

    這篇文章主要介紹了MYSQL 刪除一個(gè)字段前判斷字段是否存在的辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-08-08
  • windows10安裝mysql5.7.17教程

    windows10安裝mysql5.7.17教程

    windows10安裝mysql5.7.17是這樣安裝的嗎?這篇文章主要為大家詳細(xì)介紹了win10下mysql5.7.17安裝配置方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • mysql的計(jì)劃任務(wù)與事件調(diào)度實(shí)例分析

    mysql的計(jì)劃任務(wù)與事件調(diào)度實(shí)例分析

    這篇文章主要介紹了mysql的計(jì)劃任務(wù)與事件調(diào)度,結(jié)合實(shí)例形式分析了mysql計(jì)劃任務(wù)與事件調(diào)度相關(guān)概念、原理、用法與操作注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • MySQL NDB Cluster關(guān)于Nginx stream的負(fù)載均衡配置方式

    MySQL NDB Cluster關(guān)于Nginx stream的負(fù)載均衡配置方式

    這篇文章主要介紹了MySQL NDB Cluster關(guān)于Nginx stream的負(fù)載均衡配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • MySQL四種事務(wù)隔離級(jí)別詳解

    MySQL四種事務(wù)隔離級(jí)別詳解

    這篇文章主要為大家詳細(xì)介紹了MySQL四種事務(wù)隔離級(jí)別的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 遠(yuǎn)程無(wú)法連接Linux上MySQL的問(wèn)題解決辦法

    遠(yuǎn)程無(wú)法連接Linux上MySQL的問(wèn)題解決辦法

    MySQL不允許遠(yuǎn)程連接的問(wèn)題通??梢酝ㄟ^(guò)配置用戶權(quán)限、修改MySQL配置文件以及調(diào)整系統(tǒng)防火墻設(shè)置來(lái)解決,這篇文章主要介紹了遠(yuǎn)程無(wú)法連接Linux上MySQL的問(wèn)題解決辦法,需要的朋友可以參考下
    2025-09-09
  • Mysql查詢正在執(zhí)行的事務(wù)以及等待鎖的操作方式

    Mysql查詢正在執(zhí)行的事務(wù)以及等待鎖的操作方式

    今天小編就為大家分享一篇關(guān)于Mysql查詢正在執(zhí)行的事務(wù)以及等待鎖的操作方式,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • MySQL數(shù)據(jù)庫(kù)配置優(yōu)化的方案

    MySQL數(shù)據(jù)庫(kù)配置優(yōu)化的方案

    我們總是希望MySQL能夠獲得更高的查詢性能,最好的辦法是弄清楚MySQL是如何優(yōu)化和執(zhí)行查詢的。本文講解MySQL在各個(gè)方面的優(yōu)化方向,方便后端開(kāi)發(fā)人員在調(diào)優(yōu)和問(wèn)題排查過(guò)程中找到切入點(diǎn)
    2023-02-02

最新評(píng)論

嘉黎县| 大余县| 江陵县| 武定县| 利辛县| 青州市| 乐昌市| 安阳市| 宁国市| 东平县| 丽水市| 互助| 天峻县| 邻水| 沁阳市| 阳泉市| 宝鸡市| 舒城县| 察雅县| 商丘市| 工布江达县| 深水埗区| 紫金县| 宝清县| 会东县| 曲沃县| 永州市| 特克斯县| 阿鲁科尔沁旗| 襄垣县| 黄山市| 五华县| 富川| 九江市| 嘉鱼县| 洛扎县| 平谷区| 淮南市| 内乡县| 德化县| 鹰潭市|