老司机91精品网站在线观看-老司机67194免费观看-老司国产精品视频-老熟人老女人国产老太-中文字幕日本在线-中文字幕日本一区久久

始創于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
您的位置: 網站首頁 > 幫助中心>文章內容

MySQL單一表突破4G限制的方法

發布時間:  2012/7/27 17:49:06
-
問題:在論壇發表回復時出現“The table is full”的提示,字面意義上是數據表已滿的意思。因為很少有開發者遭遇單一表超過4G的情況,因此朋友間的討論只能提供一些外圍的信息。為解決此問題,我翻閱了很多資料,本文將以我此次問題的解決過程,介紹問題發生的原因及對策。

根據經驗,The table is full提示往往出現在以下兩種情況:

1. 表中設置了MAX_ROWS值,簡單的說,若MAX_ROWS設置為100,而程序試圖寫入第101條記錄,會出現此錯誤。

2. 表滿。這種情況是本文討論的重點


我們認為MySQL在存取表的時候,存在一種定位分配規律。這個規律在默認的情況下,可以尋址4G以內的數據。超過這個大小,數據庫將不能對數據定位,因而也無法進行讀寫。經過實驗,這個限制是完全可以被突破的。

本例中,用戶的系統環境為雙Athlon處理器、SCSI硬盤72G、2G內存,用戶的帖子表數據尺寸為4294963640,接近4G(4G的實際字節數為4294967296)。


首先SSH登錄后,查看用戶的系統信息:


# 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系統,根據內核版本2.4.20-8smp,加上國內使用的常見系統,估計應該是redhat 9發行包。


# cat /etc/*release*

Red Hat Linux release 9 (Shrike)


這也證明了我們對系統版本的猜想。


然后看一下用的是什么文件系統。因為該用戶并非高手,估計在裝系統的時候就是一路回車下來,redhat 9默認的應該是EXT3,不過我們還是看一下:


# 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


證明確實是這樣子。隨后我們翻閱了EXT3文件系統的相關技術參數,EXT3是在EXT2基礎上演變而來。EXT2所支持最大單一文件長度是2G,這個是很蹩腳的一個限制。EXT3做的很大一個改善就是將這個限制放大到了2TB,由此稍松一口氣,起碼不是操作系統上的限制。


經過朋友的開導,了解到單一文件大小有如下幾個因素:

1. 文件系統的限制(如剛存所說EXT3的2TB限制)

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


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


# myisamchk -dv cdb_posts


結果就不貼了,其中有一項Max datafile length的值恰好就是4G。由此產生了瓶頸。

后來翻閱了N多資料,進行了N多嘗試,也走了不少彎路,最終覺得還是官方文檔比較可靠。比較老的文檔里寫道這是由于tmp_table_size的值造成的,也有提到用BIG-TABLES這個參數。事實證明這些都是歧途。大晚上的確實很累,這里只給出最終的解決方案吧,中間的就不羅嗦了。


進到mysql客戶端。

# 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;


因為這個表非常大,執行時間在雙Athlon的專業服務器上竟然花了30分鐘!

之后再通過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


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

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


惟一的缺點就是,目錄占用的空間多了一些,但已經微乎其微了,做了這種改變其實4G的文件尺寸大小只增大了1M多,非常令人振奮。
本文出自:億恩科技【www.ypdoo.com.cn】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線

     
     
    香蕉视频久久| 欧美另类videosbestsex久久| 欧美一级视频高清片| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产不卡福利| 欧美a免费| 黄视频网站免费看| 精品视频在线看 | 国产网站免费在线观看| 麻豆污视频| 午夜激情视频在线观看| 精品毛片视频| 国产成人女人在线视频观看| 麻豆网站在线看| 国产一区二区精品久久91| 国产欧美精品午夜在线播放| 国产a一级| 九九久久99| 一级毛片视频免费| 欧美日本二区| 久久国产影院| 精品视频在线观看免费| 午夜家庭影院| 精品视频在线观看免费| 成人在免费观看视频国产| 久久精品大片| 欧美a级大片| 日韩一级黄色片| 国产伦久视频免费观看 视频| 久久99爰这里有精品国产| 青青久久国产成人免费网站| 韩国三级香港三级日本三级| 一 级 黄 中国色 片| 国产亚洲免费观看| 一级女性大黄生活片免费| 亚洲第一视频在线播放| 国产综合成人观看在线| 日日夜夜婷婷| 国产一区二区精品久久| 欧美大片一区| 国产一区二区精品久| 久久久久久久久综合影视网| 美女免费精品视频在线观看| 亚洲wwwwww| 日日爽天天| 久久成人综合网| 国产麻豆精品免费视频| 欧美国产日韩精品| 国产欧美精品午夜在线播放| 精品国产亚洲人成在线| 国产麻豆精品| 国产成人精品影视| 欧美另类videosbestsex视频| 久久精品免视看国产明星| 美女免费毛片| 青青久久精品国产免费看| 免费的黄色小视频| 国产不卡福利| 91麻豆精品国产片在线观看| 二级片在线观看| 999精品在线| 国产一区二区精品久久91| 99久久精品国产高清一区二区| 国产美女在线观看| 国产国语在线播放视频| 日韩一级黄色| 亚州视频一区二区| 999精品影视在线观看| 九九免费精品视频| 欧美激情一区二区三区视频 | 日韩一级黄色片| 欧美国产日韩精品| 999精品视频在线| 免费毛片播放| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 成人免费网站久久久| 中文字幕一区二区三区 精品| 成人免费高清视频| 亚洲 欧美 成人日韩| 精品视频在线看 | 久久国产影视免费精品| 国产网站在线| 成人a级高清视频在线观看| 精品久久久久久中文| 国产成人啪精品| 日韩中文字幕在线观看视频| 亚洲精品久久玖玖玖玖| 可以免费在线看黄的网站| 亚州视频一区二区| 欧美大片一区| 国产一区二区精品久久91| 一级毛片视频免费| 久久国产影院| 国产成人啪精品视频免费软件| 九九精品久久久久久久久| 午夜欧美成人香蕉剧场| 国产高清在线精品一区二区| 久久99这里只有精品国产| 午夜欧美成人久久久久久| 日日爽天天| 国产麻豆精品免费视频| 日本在线播放一区| 欧美激情影院| 黄视频网站在线观看| 国产一区二区精品久久| 美女免费精品高清毛片在线视| 欧美日本二区| 青青久热| 国产国语在线播放视频| 亚洲不卡一区二区三区在线| 国产一区免费观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 999精品在线| 91麻豆精品国产自产在线| 91麻豆精品国产高清在线| 在线观看成人网| 欧美激情一区二区三区在线播放 | 国产麻豆精品高清在线播放| 欧美激情一区二区三区在线| 久久久久久久男人的天堂| 亚洲第一视频在线播放| 国产激情一区二区三区| 色综合久久天天综合| 成人免费网站久久久| 国产成人精品一区二区视频| 成人高清免费| 亚洲 激情| 日日爽天天| 日韩一级黄色大片| 国产成a人片在线观看视频| 国产伦久视频免费观看视频| 欧美α片无限看在线观看免费| 97视频免费在线观看| 成人a级高清视频在线观看| 欧美国产日韩一区二区三区| 精品国产一区二区三区久久久蜜臀 | 日韩专区亚洲综合久久| 美女免费精品高清毛片在线视| 国产成+人+综合+亚洲不卡 | 久久国产影视免费精品| 日韩中文字幕在线亚洲一区| 999精品视频在线| 亚洲不卡一区二区三区在线| 九九精品在线| 亚洲wwwwww| 成人免费观看男女羞羞视频| 国产成人精品综合| 欧美另类videosbestsex高清| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日本伦理网站| 一级毛片视频播放| 亚欧视频在线| 国产a毛片| 日韩女人做爰大片| 色综合久久天天综线观看| 精品视频一区二区三区免费| 欧美一区二区三区在线观看| 日韩免费在线视频| 日韩一级黄色| 欧美激情一区二区三区在线| 青青久久精品国产免费看| 日本特黄特黄aaaaa大片| 欧美α片无限看在线观看免费| 国产一区二区精品久久91| 韩国毛片基地| 国产网站在线| 九九精品久久久久久久久| 欧美日本免费| 亚洲wwwwww| 美女被草网站| 国产一区二区精品久| 日韩字幕在线| 久久福利影视| 可以在线看黄的网站| 国产高清视频免费观看| 欧美1区| 日韩在线观看视频网站| 亚洲女初尝黑人巨高清在线观看| 日韩免费片| 你懂的日韩| 国产成人精品综合在线| 欧美激情一区二区三区视频高清| 韩国三级一区| 香蕉视频亚洲一级| 一级片片| 欧美激情一区二区三区视频 | 国产一区二区精品| 精品国产亚洲人成在线| 精品视频在线看| 免费毛片基地| 日韩专区一区| 日韩欧美一二三区| 精品久久久久久免费影院| 亚洲精品中文字幕久久久久久| 你懂的日韩| 一级女性全黄生活片免费| 香蕉视频一级| 国产视频久久久| 亚州视频一区二区| 亚洲爆爽|