日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
MySQL共享表空間擴容具體方法

共享表空間默認是開啟的,默認文件名為ibdata1,保存在當前mysql實例的數(shù)據(jù)目錄下(當然你也可以指定其它目錄,建議就還是不指定存儲路徑了),文件默認只有一個,大小是12M。

正安網(wǎng)站建設公司創(chuàng)新互聯(lián),正安網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為正安1000多家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的正安做網(wǎng)站的公司定做!

一.什么是共享表空間和獨占表空間

共享表空間以及獨占表空間都是針對數(shù)據(jù)的存儲方式而言的。

共享表空間: 某一個數(shù)據(jù)庫的所有的表數(shù)據(jù),索引文件全部放在一個文件中,默認這個共享表空間的文件路徑在data目錄下。 默認的文件名為:ibdata1 初始化為10M。

獨占表空間: 每一個表都將會生成以獨立的文件方式來進行存儲,每一個表都有一個.frm表描述文件,還有一個.ibd文件。 其中這個文件包括了單獨一個表的數(shù)據(jù)內(nèi)容以及索引內(nèi)容,默認情況下它的存儲位置也是在表的位置之中。

兩者之間的優(yōu)缺點

共享表空間:

優(yōu)點:

可以將表空間分成多個文件存放到各個磁盤上。數(shù)據(jù)和文件放在一起方便管理。

缺點:

所有的數(shù)據(jù)和索引存放到一個文件中以為著將有一個很常大的文件,雖然可以把一個大文件分成多個小文件,但是多個表及索引在表空間中混合存儲,這樣對于一個表做了大量刪除操作后表空間中將會有大量的空隙,特別是對于統(tǒng)計分析,日值系統(tǒng)這類應用最不適合用共享表空間。

獨立表空間:在配置文件(my.cnf)中設置: innodb_file_per_table

優(yōu)點:

1.每個表都有自已獨立的表空間。

2.每個表的數(shù)據(jù)和索引都會存在自己的表空間中。

3.可以實現(xiàn)單表在不同的數(shù)據(jù)庫中移動。

4.空間可以回收

a) Drop table操作自動回收表空間,如果對于統(tǒng)計分析或是日值表,刪除大量數(shù)據(jù)后可以通過:alter table TableName engine=innodb;回縮不用的空間。

b) 對于使innodb-plugin的Innodb使用turncate table也會使空間收縮。

c) 對于使用獨立表空間的表,不管怎么刪除,表空間的碎片不會太嚴重的影響性能,而且還有機會處理。

缺點:

單表增加過大,如超過100個G

二.共享表空間存放什么東西

當你啟用了 innodb_file_per_table,表被存儲在他們自己的表空間里,但是共享表空間仍然在存儲其它的 InnoDB 內(nèi)部數(shù)據(jù):

(1)數(shù)據(jù)字典,也就是 InnoDB 表的元數(shù)據(jù)

(2)change緩沖區(qū)

(3)雙寫緩沖區(qū)

(4)回滾段

(5)undo空間

(6)外鍵約束系統(tǒng)表

因此,我們在初始化ibdata1時,最好設置大一些,這樣就可以避免因為在高并發(fā)情景下導致ibdata1急劇增大,大大影響性能。

三.什么原因引起ibdata1大小迅速增加

(1)出現(xiàn)Bug

(2)清除事務的速度跟不上,主要是磁盤IO

(3)大事務undo,即使kill了,空間也不能回收

主要從如下方面改進:

(1)并發(fā)purge線程夠不

(2)磁盤IO

(3)不要用32位系統(tǒng)

(4)盡量減少大事務執(zhí)行,將大事務進行分拆多個小事務執(zhí)行

當設置innodb_file_per_table=1啟用獨立表空間后,ibdata1變很大,常見的原因都是有大活動事務執(zhí)行很久沒有完成或是存在回滾空間中的未清除事務數(shù)。

可以在show engine innodb status的TRANSACTIONS部分查看正在執(zhí)行的活動事務或History list length值來確認原因。

四.如何給共享表空間擴容

場景一:在同一磁盤中給共享表空間的ibdata1擴容操作: 檢查my.cnf文件配置的ibdata1大小初始值為1000M,自動增長,如下: innodb_data_home_dir=/apps/dbdat/mariadb10_data3306 innodb_data_file_path=ibdata1:1000M:autoextend 檢查數(shù)據(jù)文件目錄中ibdata1實際文件大小為1786773504,如下: -rw-r–r– 1 apps apps 1786773504 Jul 27 21:29 ibdata1 這里擴容有兩個注意的地方: 1.若ibdata1的實際大小沒有超過1000M,那么擴容的配置文件中直接寫1000M; 2.若ibdata1的實際大小超過了1000M,則擴容的配置文件中寫實際的精確大小值,如上面這個場景的操作: (product)root@localhost [(none)]> select 1786773504/1024/1024; +———————-+ | 1786773504/1024/1024 | +———————-+ | 1704.00000000 | +———————-+ 1 row in set (0.00 sec) 更改my.cnf配置,增加一個ibdata2,如下 innodb_data_file_path=ibdata1:1704M;ibdata2:1000M:autoextend ——這里注意格式,分號和冒號 重啟MySQL后,檢查新增的ibdata2是否生效,下面表示已有生效。 [apps@mvxl0782 mariadb10_data3306]$ ls -l|grep ibd -rw-r–r– 1 apps apps 1786773504 Jul 31 18:44 ibdata1 -rw-rw—- 1 apps apps 1048576000 Jul 31 18:44 ibdata2

場景二:在不同磁盤中給共享表空間的ibdata1擴容操作: 根據(jù)場景一中擴容的兩點注意,更改my.cnf配置,在不同磁盤中增加一個ibdata3,如下 innodb_data_file_path=ibdata1:1704M;ibdata2:1000M;/apps2/dbdat/ibdata3:100M:autoextend 重啟mysql時,報下面錯:

160731 18:53:29 mysqld_safe mysqld from pid file /apps/dbdat/mariadb10_data3306/mysql.pid ended
160731 18:53:38 mysqld_safe Starting mysqld daemon with databases from /apps/dbdat/mariadb10_data3306
160731 18:53:38 [Note] /apps/svr/mariadb10/bin/mysqld (mysqld 10.0.20-MariaDB-log) starting as process 15681 ...
2016-07-31 18:53:38 7f83161d9760 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in
future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator. 160731 18:53:38 [Note] InnoDB: Using mutexes to ref count buffer pool pages 160731 18:53:38 [Note] InnoDB: The InnoDB memory heap is disabled 160731 18:53:38 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 160731 18:53:38 [Note] InnoDB: Memory barrier is not used 160731 18:53:38 [Note] InnoDB: Compressed tables use zlib 1.2.3 160731 18:53:38 [Note] InnoDB: Using Linux native AIO 160731 18:53:38 [Note] InnoDB: Using CPU crc32 instructions 160731 18:53:38 [Note] InnoDB: Initializing buffer pool, size = 21.0G 160731 18:53:39 [Note] InnoDB: Completed initialization of buffer pool 2016-07-31 18:53:39 7f83161d9760 InnoDB: Operating system error number 2 in a file operation. InnoDB: The error means the system cannot find the path specified. InnoDB: If you are installing InnoDB, remember that you must create InnoDB: directories yourself, InnoDB does not create them. 160731 18:53:39 [ERROR] InnoDB: File /apps/dbdat/mariadb10_data3306//apps2/dbdat/ibdata3: 'create' returned OS error 71. Cannot cont inue operation 160731 18:53:39 mysqld_safe mysqld from pid file /apps/dbdat/mariadb10_data3306/mysql.pid ende 

從上面看到mysql實際上是識別 /apps/dbdat/mariadb10_data3306//apps2/dbdat/ibdata3文件,由于innodb_data_home_dir=/apps/dbdat/mariadb10_data3306有設置數(shù)據(jù)文件目錄,所以將設置重新改為如下: innodb_data_home_dir= innodb_data_file_path=/apps/dbdat/mariadb10_data3306/ibdata1:1704M;/apps/dbdat/mariadb10_data3306/ibdata2:1000M;/apps2/dbdat/ibdata3:100M:autoextend

———這里注意格式,分號和冒號

查看新磁盤中下的ibdat3文件已有產(chǎn)生,如下:

[apps@mvxl0782 mariadb10_data3306]$ cd /apps2/dbdat
[apps@mvxl0782 dbdat]$ ls -lt
total 102404
-rw-rw---- 1 apps apps 104857600 Jul 31 19:00 ibdata3

當前題目:MySQL共享表空間擴容具體方法
URL鏈接:http://m.5511xx.com/article/codpejh.html