久久无码中文字幕_日韩精品无码一本二本三_久久精品呦女暗网_欧美一级夜夜爽_久久精品国产99久久99久久久

26
2024/09

數(shù)據(jù)庫新增字段結(jié)果報(bào)錯(cuò)Row size too large 如何解決

發(fā)布時(shí)間:2024-09-26 14:04:01
發(fā)布者:已經(jīng)寫了
瀏覽量:
0

最新在更新項(xiàng)目的時(shí)候,需要對(duì)一些數(shù)據(jù)表增加幾個(gè)新的字段。前面增加兩個(gè)的時(shí)候還很正常沒有出現(xiàn)異常情況,在增加的時(shí)候就開始報(bào)錯(cuò)了,報(bào)錯(cuò)的內(nèi)容是Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.翻譯翻譯的意思就是:行大小太大(>8126)。將某些列更改為TEXT或BLOB,或使用ROW_FORMAT=DYNAMIC或ROW_FORMAT=COMPRESSED可能會(huì)有所幫助。在當(dāng)前的行格式中,768字節(jié)的BLOB前綴是內(nèi)聯(lián)存儲(chǔ)的。

普通翻譯一下就是,單行數(shù)據(jù)的長度太長了,不允許在增加字段了,你可以把之前的字段類型改稱text或者blob的格式來縮減長度然后在增加字段,但是這個(gè)解決方式有點(diǎn)不徹底,加的多的話還是解決不了。

這里直接就把徹底解決的方式解釋一下,如果你的表使用的是REDUNDAN或者COMPACT的行格式,那么我們只需要把行格式改稱DYNAMIC就可以了。

數(shù)據(jù)庫的行格式根據(jù)不同的數(shù)據(jù)庫系統(tǒng)可能有所不同。以下是MySQL中的四種行格式:

REDUNDANT(冗余行格式):

這是MySQL 5.0之前默認(rèn)的行格式。

特點(diǎn)包括將前768字節(jié)的變長列值存儲(chǔ)在B樹節(jié)點(diǎn)的索引記錄中,多余的部分存儲(chǔ)在溢出頁。

對(duì)于大于768字節(jié)的固定長度列,會(huì)被編碼為可變長度列并可能存儲(chǔ)在頁面外。

這種格式在MySQL 5.0及之后的版本中逐漸被新的行格式所取代,但在某些系統(tǒng)表中可能仍然使用。

COMPACT(緊湊行格式):

MySQL 5.0及更高版本默認(rèn)的行格式(在某些MySQL版本中,如MySQL 5.7,默認(rèn)行格式可能已更改為DYNAMIC)。

與REDUNDANT相比,COMPACT行格式減少了存儲(chǔ)空間的使用,并可能提高性能,尤其是在緩存命中率和磁盤速度有限制的情況下。

它也使用溢出頁來存儲(chǔ)超過768字節(jié)的列值,但整體存儲(chǔ)結(jié)構(gòu)更加緊湊。

DYNAMIC(動(dòng)態(tài)行格式):

MySQL 5.7及更高版本的默認(rèn)行格式(在啟用了Barracuda文件格式的InnoDB存儲(chǔ)引擎中)。

這種行格式支持更長的可變長度列和更大的索引鍵前綴,能夠更好地處理大型數(shù)據(jù)集和復(fù)雜查詢。

它將長列值完全存儲(chǔ)在溢出頁中,并在記錄頭中僅存儲(chǔ)指向這些溢出頁的指針,從而減少了記錄頭的大小并提高了存儲(chǔ)效率。

COMPRESSED(壓縮行格式):

類似于DYNAMIC行格式,但增加了對(duì)表和索引數(shù)據(jù)的壓縮支持。

通過壓縮數(shù)據(jù),可以進(jìn)一步減少存儲(chǔ)空間的使用,但可能會(huì)增加CPU的使用率,因?yàn)閿?shù)據(jù)在讀取和寫入時(shí)需要進(jìn)行壓縮和解壓。

要使用COMPRESSED行格式,需要啟用innodb_file_per_table選項(xiàng),并確保InnoDB存儲(chǔ)引擎使用的是Barracuda文件格式。

數(shù)據(jù)庫新增字段結(jié)果報(bào)錯(cuò)Row size too large 如何解決


返回列表