成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL數(shù)據(jù)庫(kù)單一表突破4G限制的實(shí)現(xiàn)方法

數(shù)據(jù)庫(kù) MySQL
MySQL數(shù)據(jù)庫(kù)隨著近年來(lái)的發(fā)展,已經(jīng)進(jìn)步了很多,大家都知道MySQL數(shù)據(jù)庫(kù)表都是有一定限制的,MySQL數(shù)據(jù)庫(kù)的數(shù)據(jù)表不可能無(wú)限的存儲(chǔ),4G夠不夠大,MySQL數(shù)據(jù)庫(kù)中單一表就能夠?qū)崿F(xiàn)突破這個(gè)限制。

導(dǎo)讀:在論壇發(fā)表回復(fù)時(shí)出現(xiàn)“The table is full”的提示,字面意義上是數(shù)據(jù)表已滿的意思,可見(jiàn)數(shù)據(jù)表內(nèi)存是不足的,因?yàn)楹苌儆虚_(kāi)發(fā)者遭遇單一表超過(guò)4G的情況,下文中就為大家介紹實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)單一表突破4G限制的方法。

根據(jù)經(jīng)驗(yàn),The table is full提示往往出現(xiàn)在以下兩種情況:

1. 表中設(shè)置了MAX_ROWS值,簡(jiǎn)單的說(shuō),若MAX_ROWS設(shè)置為100,而程序試圖寫(xiě)入第101條記錄,會(huì)出現(xiàn)此錯(cuò)誤。

2. 表滿。這種情況是本文討論的重點(diǎn)

我們認(rèn)為MySQL在存取表的時(shí)候,存在一種定位分配規(guī)律。這個(gè)規(guī)律在默認(rèn)的情況下,可以尋址4G以內(nèi)的數(shù)據(jù)。超過(guò)這個(gè)大小,數(shù)據(jù)庫(kù)將不能對(duì)數(shù)據(jù)定位,因而也無(wú)法進(jìn)行讀寫(xiě)。經(jīng)過(guò)實(shí)驗(yàn),這個(gè)限制是完全可以被突破的。

本例中,用戶的系統(tǒng)環(huán)境為雙Athlon處理器、SCSI硬盤(pán)72G、2G內(nèi)存,用戶的帖子表數(shù)據(jù)尺寸為4294963640,接近4G(4G的實(shí)際字節(jié)數(shù)為4294967296)。

首先SSH登錄后,查看用戶的系統(tǒng)信息:

以下為引用的內(nèi)容:
# uname -a

Linux zichen.com 2.4.20-8smp #1 SMP Thu Mar 13 16:43:01 EST 2003 i686 athlon i386 GNU/Linux
證明是Linux系統(tǒng),根據(jù)內(nèi)核版本2.4.20-8smp,加上國(guó)內(nèi)使用的常見(jiàn)系統(tǒng),估計(jì)應(yīng)該是redhat 9發(fā)行包。

# cat /etc/*release*

Red Hat Linux release 9 (Shrike)

這也證明了我們對(duì)系統(tǒng)版本的猜想。

然后看一下用的是什么文件系統(tǒng)。因?yàn)樵撚脩舨⒎歉呤?,估?jì)在裝系統(tǒng)的時(shí)候就是一路回車(chē)下來(lái),redhat 9默認(rèn)的應(yīng)該是EXT3,不過(guò)我們還是看一下:

以下為引用的內(nèi)容:
# parted

GNU Parted 1.6.3

Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.

This program is free software, covered by the GNU General Public License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Using /dev/sda

Information: The operating system thinks the geometry on /dev/sda is 8942/255/63. Therefore, cylinder 1024 ends at 8032.499M.

(parted) print

Disk geometry for /dev/sda: 0.000-70149.507 megabytes

Disk label type: msdos

Minor Start End Type Filesystem Flags

1 0.031 101.975 primary ext3 boot

2 101.975 10103.378 primary linux-swap
 

證明確實(shí)是這樣子。隨后我們翻閱了EXT3文件系統(tǒng)的相關(guān)技術(shù)參數(shù),EXT3是在EXT2基礎(chǔ)上演變而來(lái)。EXT2所支持最大單一文件長(zhǎng)度是2G,這個(gè)是很蹩腳的一個(gè)限制。EXT3做的很大一個(gè)改善就是將這個(gè)限制放大到了2TB,由此稍松一口氣,起碼不是操作系統(tǒng)上的限制。

#p#

經(jīng)過(guò)朋友的開(kāi)導(dǎo),了解到單一文件大小有如下幾個(gè)因素:

1. 文件系統(tǒng)的限制(如剛存所說(shuō)EXT3的2TB限制)

2. 某一程序進(jìn)程所能存取的第一文件最大尺寸(例如apache在Linux EXT3下能存取的最大尺寸為2G,諸如日志)

初步判斷瓶頸就在上述其中第二項(xiàng)。隨后找到myisamchk來(lái)顯示一下表信息,證明了瓶頸就在MySQL本身的存取上。

# myisamchk -dv cdb_posts

結(jié)果就不貼了,其中有一項(xiàng)Max datafile length的值恰好就是4G。由此產(chǎn)生了瓶頸。

后來(lái)翻閱了N多資料,進(jìn)行了N多嘗試,也走了不少?gòu)澛?,最終覺(jué)得還是官方文檔比較可靠。比較老的文檔里寫(xiě)道這是由于tmp_table_size的值造成的,也有提到用BIG-TABLES這個(gè)參數(shù)。事實(shí)證明這些都是歧途。大晚上的確實(shí)很累,這里只給出最終的解決方案吧,中間的就不羅嗦了。
 

進(jìn)到mysql客戶端。

以下為引用的內(nèi)容:
# mysql -uroot -p

Enter password: ******

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 59411 to server version: 4.0.18-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use ******

Database changed

mysql> ALTER TABLE cdb_posts MAX_ROWS=1000000000 AVG_ROW_LENGTH=15000;

因?yàn)檫@個(gè)表非常大,執(zhí)行時(shí)間在雙Athlon的專業(yè)服務(wù)器上竟然花了30分鐘!

之后再通過(guò)myisamchk查看該表的信息:

# myisamchk -dv cdb_posts

MyISAM file: cdb_posts

Record format: Packed

Character set: latin1 (8)

File-version: 1

Creation time: 2004-08-30 22:19:48

Recover time: 2004-08-30 22:42:47

Status: open,changed

Auto increment key: 1 Last value: 1063143

Data records: 619904 Deleted blocks: 5

Datafile parts: 619909 Deleted data: 323872

Datafile pointer (bytes): 6 Keyfile pointer (bytes): 4

Datafile length: 4295287332 Keyfile length: 40421376

Max datafile length: 281474976710654 Max keyfile length: 4398046510079

Recordlength: 149

table description:

Key Start Len Index Type Rec/key Root Blocksize

1 1 4 unique unsigned long 1 4535296 1024

2 5 2 multip. unsigned short 13776 12540928 1024

3 111 4 multip. unsigned long 1 18854912 1024

4 28 3 multip. uint24 18 24546304 1024

5 7 3 multip. uint24 7 32827392 1024

111 4 unsigned long 1

6 7 3 multip. uint24 7 40418304 1024

28 3 uint24
 

令人振奮的事情發(fā)生了,該表的 Max datafile length: 281474976710654 Max keyfile length: 4398046510079,即最大數(shù)據(jù)尺寸(MYD文件)達(dá)到了2TB,最大索引尺寸(MYI)仍然為4G。

由此默認(rèn)的4G限制被突破了。關(guān)于其中的原理,其實(shí)很簡(jiǎn)單:假設(shè)你有一個(gè)日記本,上面有10頁(yè)紙可以寫(xiě)東西,編排目錄只需要1個(gè)字節(jié)(因?yàn)?~9就夠了)。如果你把這本子又塞進(jìn)兩張紙,變成12頁(yè),1個(gè)字節(jié)的目錄空間就無(wú)法尋址到后面的兩頁(yè)中,進(jìn)而產(chǎn)生了錯(cuò)誤。上面那個(gè)ALTER語(yǔ)句中的數(shù)值都是我為保證成功,取的比較大的值(因?yàn)锳LTER一次實(shí)在是太慢了,沒(méi)時(shí)間在那亂試驗(yàn)),相當(dāng)于告訴數(shù)據(jù)庫(kù),這個(gè)本子有1000000000頁(yè),每頁(yè)平均有15000個(gè)字節(jié)。這樣數(shù)據(jù)庫(kù)便知道這是很大的一個(gè)本子,因此不遺余力的拿出了100頁(yè)(假設(shè)說(shuō))做目錄編排,這樣這個(gè)新的目錄就可以尋址到日記本的所有內(nèi)容了。錯(cuò)誤消失。

惟一的缺點(diǎn)就是,目錄占用的空間多了一些,但已經(jīng)微乎其微了,做了這種改變其實(shí)4G的文件尺寸大小只增大了1M多,非常令人振奮。

這樣通過(guò)上文的介紹實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)單一表突破4G限制就沒(méi)有什么難的啦,4G確實(shí)是個(gè)讓人振奮的存儲(chǔ)量。

【編輯推薦】

  1. MySQL數(shù)據(jù)庫(kù)常見(jiàn)問(wèn)題匯總
  2. SQL實(shí)現(xiàn)動(dòng)態(tài)交叉表
  3. SQL Server數(shù)據(jù)庫(kù)對(duì)上億表的操作
  4. 帶你深入了解數(shù)據(jù)庫(kù)設(shè)計(jì)中的英文術(shù)語(yǔ)表
責(zé)任編輯:迎迎 來(lái)源: 12it.net
相關(guān)推薦

2009-05-20 13:48:55

限制MySQLthe table i

2021-12-23 08:00:00

數(shù)據(jù)庫(kù)微服務(wù)Web

2015-01-28 16:04:43

2013-12-12 13:35:05

4G大數(shù)據(jù)革命大數(shù)據(jù)

2021-01-10 21:13:21

4G5GLTE技術(shù)

2013-12-05 09:20:58

中移動(dòng)4G牌照4G網(wǎng)絡(luò)

2013-01-30 09:25:21

4G通信網(wǎng)絡(luò)LTE

2010-10-13 11:59:50

MySQL表命名

2013-12-17 09:52:55

4G移動(dòng)互聯(lián)網(wǎng)

2022-07-28 00:25:22

5G4G速度

2011-05-24 09:32:38

2009-06-09 10:34:41

802.16mLTE4G

2013-12-02 14:15:35

4G移動(dòng)

2021-05-10 10:16:03

5G4G網(wǎng)絡(luò)

2011-10-19 08:08:20

LTE

2011-09-29 10:13:30

4G3G

2014-06-19 16:03:31

酷派4G

2022-08-03 15:17:07

5G4GLTE

2010-10-13 11:54:00

MySQL數(shù)據(jù)庫(kù)表

2011-04-12 14:48:38

MySQL數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 在线观看av网站 | 毛片在线免费 | 免费a网 | 99久久电影| 亚洲福利视频一区二区 | 欧美一区二区三区久久精品视 | 日韩中文字幕一区 | 中文字幕一区二区三区乱码在线 | 久久久久91 | 精品久久国产 | 欧美xxxⅹ性欧美大片 | 宅女噜噜66国产精品观看免费 | 国产黄色一级片 | 日韩免费福利视频 | 成人在线视频网 | 欧美亚洲国产一区二区三区 | 午夜色播| 亚洲精品欧美一区二区三区 | 欧美日韩在线高清 | 亚洲精品一区在线 | 国产精品日产欧美久久久久 | 久久久成人免费视频 | 久久成人精品一区二区三区 | 9久久婷婷国产综合精品性色 | 91婷婷韩国欧美一区二区 | 一区二区三区精品视频 | 99精品国产成人一区二区 | 久久精品av麻豆的观看方式 | 中文字幕高清在线 | 日韩免费一级 | 国内在线视频 | 国产午夜精品久久久久 | 日本一区高清 | 国产一区二区三区四区三区四 | 国产免费一级片 | 欧美日韩久 | 午夜视频在线观看网站 | 日p视频免费看 | 正在播放国产精品 | 成人精品免费视频 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 |