国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 數據庫 > 文庫 > 正文

innodb_data_file_path和innodb_data_home_dir

2024-09-07 22:12:38
字體:
來源:轉載
供稿:網友
        今天研究下關于mysql數據的相關參數以及innodb引擎下的共享表空間和獨立表空間介紹,參數主要包括innodb_data_file_path、innodb_data_home_dir、innodb_buffer_pool_size、innodb_buffer_pool_instances四個參數。
一:首先介紹innodb_buffer_pool_size
        我們知道mysql數據庫在操作數據頁的時候,會先把數據頁pin到內存中,之后再做相關的處理,那么mysql可以使用的mysql的內存大小就是由innodb_buffer_pool_size參數控制的,這個參數主要作用是緩存innodb表的索引,數據,插入數據時的緩沖。在高并發高I/O時正確的配置非常重要,可能帶來很大的性能提升,這是InnoDB最重要的設置,對InnoDB性能有決定性的影響。默認的設置只有8M,所以默認的數據庫設置下面InnoDB性能很差。在只有 InnoDB存儲引擎的數據庫服務器上面,可以設置60-80%的內存。這個參數是非動態的,要修改這個值,需要重啟mysqld服務
# InnoDB, unlike MyISAM, uses a buffer pool to cache both indexes and
# row data. The bigger you set this the less disk I/O is needed to
# access data in tables. On a dedicated database server you may set this
# parameter up to 80% of the machine physical memory size. Do not set it
# too large, though, because competition of the physical memory may
# cause paging in the operating system. Note that on 32bit systems you
# might be limited to 2-3.5G of user level memory per process, so do not
# set it too high.
#innodb,不像myisam,使用緩沖池來緩存索引和
#行數據。您設置的越大,那么訪問表中的數據所需的磁盤I /o就越少。
#在專用的數據庫服務器上,您可以設置這個
#參數最多80%的計算機物理內存大小。不要設置它
#太大了,因為物理內存的競爭可能
#導致操作系統中的分頁。注意,在32位系統上
#可能僅限于每個進程的2-3.5g用戶級內存,所以不要
把它定得太高了。
二:innodb_data_home_dir和innodb_data_file_path參數
        innodb_data_file_path用來指定innodb 共享 表空間文件,如果我們不在My.cnf文件中指定innodb_data_home_dir和innodb_data_file_path那么默認會在datadir目錄下創建ibdata1 作為innodb tablespace。
        雖然不指定innodb_data_home_dir和指定它為空顯示是一樣的,但是作用確不一樣,如果不指定那么所有的innodb tablespace 文件只能存放在datadir目錄下。如果顯示指定為空,則可以為innodb tablespace 文件指定不同的路徑
1. 在同一個路徑下指定多個innodb tablespace 文件
1)
       在my.cnf文件指定如下
[mysqld]
innodb_data_file_path = ibdata1:1G;ibdata2:12M:autoextend:max:500M
note:The autoextend and max attributes can be used only for the last data file in the innodb_data_file_path line.
note:因為沒有指定innodb_data_home_dir,所以ibdata1和ibdata2都在datadir(innodb_data_home_dir默認值為datadir)目錄下創建
2)
       在my.cnf文件指定如下
[mysqld]
innodb_data_home_dir = /data/mysql/mysql3306/data
innodb_data_file_path = ibdata1:1G;ibdata2:12M:autoextend:max:500M
note:可以顯示的指定innodb tablespace文件的路徑,如果指定innodb_data_home_dir,那么就不能為innodb tablespace不同文件指定不同路徑
2. 在不同路徑下指定innodb tablespace
在my.cnf文件下指定
[mysqld]
innodb_data_home_dir =
innodb_data_file_path = ibdata1:12M;/data/mysql/mysql3306/data1/ibdata2:12M:autoextend
note:如果想為innodb tablespace指定不同目錄下的文件,必須指定innodb_data_home_dir =。這個例子中會在datadir下建立ibdata1,在/data/mysql/mysql3306/data1/目錄下創建ibdata2
如果我不指定innodb_data_home_dir =,只在my.cnf文件中做如下指定:
innodb_data_file_path =/data/data/ibdata1:18m;/data/data/1ibdata2:100m:autoextend:max:2000M
bogon:root@~>service mysqld start
Starting MySQL. ERROR! The server quit without updating PID file (/tmp/mysql.pid).
查看錯誤日志。。。如下
bogon:root@/>tail -n 100 /data/log/error.log
171127 21:08:16 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.
InnoDB: File name .//data/data/ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
##所以如果想為innodb tablespace文件指定不同路徑,那么必須在my.cnf文件中指定innodb_data_home_dir =
注意:
1)設定文件大小時一定要注意你的OS是否有最大文件尺寸為2GB的限制!InnoDB是不會注意你的OS文件尺寸限制的, 在一些文件系統中你可能要設定最大容量限制:
innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:100M:autoextend:max:2000M
2)如果是修改共享表空間的文件個數,注意在描述原來文件的時候,一定要找到該文件,查看他當前的實際大小,然后寫在innodb_data_file_path =哪個文件的后面。否則會報錯。
三:innodb_buffer_pool_instances
innodb緩沖池被劃分為多個內存緩沖池的數量。對于具有多GB范圍的緩沖池的系統,將緩沖池劃分為多個緩沖池可以提高并發性,減少對不同線程讀取和寫入到緩存時頁面的爭用。從緩沖池中存儲或讀取的每個頁面都隨機分配給其中一個緩沖池實例,使用哈希函數。每個緩沖池管理自己的自由列表、刷新列表、LRU和連接到緩沖池的所有其他數據結構,并由自己的buffer pool mutex(互斥體)保護。
只有當您將innodb _ buffer _ pool _size設置為1gb或更高的大小時,此選項才會生效。所有緩沖池的大小之和是您指定的總的緩存池大小。為了獲得最佳效率,請指定innodb _ buffer _ pool _instances和innodb _ buffer _ pool _size的組合,以便每個緩沖池實例至少為1gb。
在MySQL 5.6.6之前,默認是1, 默認值 在MySQL 5.6.6和更高版本在32位系統取決于innodb_buffer_pool_size的值
1 innodb_buffer_pool_instances可以開啟多個內存緩沖池,把需要緩沖的數據hash到不同的緩沖池中,這樣可以并行的內存讀寫。
2 innodb_buffer_pool_instances 參數顯著的影響測試結果,特別是非常高的 I/O 負載時。
3 實驗環境下, innodb_buffer_pool_instances=8 在很小的 buffer_pool 大小時有很大的提升,而使用大的 buffer_pool 時,innodb_buffer_pool_instances=1 的表現最棒。
最后說說mysql的innodb引擎下的表空間:
一、針對innodb引擎,分為兩種情況一種是共享表空間存儲方式,還有一種是獨享表空間存儲方式。
共享表空間: Innodb的所有數據保存在一個單獨的表空間里面,而這個表空間可以由很多個文件組成,一個表可以跨多個文件存在,所以其大小限制不再是文件大小的限制,而是其自身的限制。從Innodb的官方文檔中可以看到,其表空間的最大限制為64TB,也就是說,Innodb的單表限制基本上也在64TB左右了,當然這個大小是包括這個表的所有索引等其他相關數據。
獨立表空間:
而當使用獨享表空間來存放Innodb的表的時候,每個表的數據以一個單獨的文件來存放,這個時候的單表限制,又變成文件系統的大小限制了
針對myasam引擎:
MySQL單表最大限制就已經擴大到了64PB了(官方文檔顯示)。也就是說,從目前的技術環境來看,MySQL數據庫的MyISAM存儲 引擎單表大小限制已經不是有MySQL數據庫本身來決定,而是由所在主機的OS上面的文件系統來決定了。
二、查看數據庫的表空間
MySQL [(none)]> show variables like 'innodb_data%';
+-----------------------+----------------------------------------------------------------------+
| Variable_name         | Value                                                                |
+-----------------------+----------------------------------------------------------------------+
| innodb_data_file_path | /data/data/ibdata1:100m;/data/data1/ibdata2:100m:autoextend:max:2000M |
| innodb_data_home_dir  |                                                                      |
+-----------------------+----------------------------------------------------------------------+
表空間有四個文件組成:ibdata1、ibdata2每個文件的大小為100M,當ibdata1文件滿了的時候,ibdata2會自動擴展;
當前的存儲空間滿的時候,可以在其他的磁盤添加數據文件,語法如下:語法如下所示:
pathtodatafile:sizespecification;pathtodatafile:sizespec;.;pathtodatafile:sizespec[:autoextend[:max:sizespecification]]
如果用 autoextend 選項描述最后一個數據文件,當 InnoDB 用盡所有表自由空間后將會自動擴充最后一個數據文件,每次增量為 8 MB。示例:
不管是共享表空間和獨立表空間,都會存在innodb_data_file文件,因為這些文件不僅僅要存放數據,而且還要充當著類似于ORACLE的UNDO表空間等一些角色。
三、共享表空間優缺點
既然Innodb有共享表空間和獨立表空間兩種類型,那么這兩種表空間存在肯定都有時候自己的應用的場景,存在即合理。以下是摘自mysql官方的一些介紹:
3.1 共享表空間的優點
表空間可以分成多個文件存放到各個磁盤,所以表也就可以分成多個文件存放在磁盤上,表的大小不受磁盤大小的限制,方便擴容,放到多個磁盤磁盤上可以分散io,提高性能。
3.2 共享表空間的缺點
所有的數據和索引存放到一個文件,雖然可以把一個大文件分成多個小文件,但是多個表及索引在表空間中混合存儲,當數據量非常大的時候,表做了大量刪除操作后表空間中將會有大量的空隙,特別是對于統計分析,日志系統這類應用最不適合用共享表空間,對于經常刪除操作的這類應用最不適合用共享表空間。
共享表空間分配后不能回縮:當出現臨時建索引或是創建一個臨時表的操作表空間擴大后,就是刪除相關的表也沒辦法回縮那部分空間了(可以理解為oracle的表空間10G,但是才使用10M,但是操作系統顯示的表空間為10G),進行數據庫的冷備很慢;
四、獨立表空間的優缺點
4.1 獨立表空間的優點
每個表都有自已獨立的表空間,每個表的數據和索引都會存在自已的表空間中,可以實現單表在不同的數據庫中移動。
空間可以回收(除drop table操作外,表空不能自已回收)
Drop table操作自動回收表空間,如果對于統計分析或是日志表,刪除大量數據后可以通過:alter table TableName engine=innodb;回縮不用的空間。
對于使innodb-plugin的Innodb使用turncate table也會使空間收縮。
對于使用獨立表空間的表,不管怎么刪除,表空間的碎片不會太嚴重的影響性能;
4.2 獨立表空間的缺點
單表增加過大,當單表占用空間過大時,存儲空間不足,只能從操作系統層面思考解決方法,比如做軟連接;
五、共享表空間和獨立表空間之間的轉換
5.1 查看當前數據庫的表空間管理類型
mysql> show variables like "innodb_file_per_table";
 ON代表獨立表空間管理,OFF代表共享表空間管理;(查看單表的表空間管理方式,需要查看每個表是否有單獨的數據文件)
5.2 修改數據庫的表空間管理方式
修改innodb_file_per_table的參數值即可,但是修改不能影響之前已經使用過的共享表空間和獨立表空間;
innodb_file_per_table=1 為使用獨占表空間
innodb_file_per_table=0 為使用共享表空間
題外話
碎片的產生:
MySQL具有相當多不同種類的存儲引擎來實現列表中的數據存儲功能。每當MySQL從你的列表中刪除了一行內容,該段空間就會被留空。而在一段時間內的大量刪除操作,會使這種留空的空間變得比存儲列表內容所使用的空間更大。當MySQL對數據進行掃描時,它掃描的對象實際是列表的容量需求上限,也就是數據被寫入的區域中處于峰值位置的部分。如果進行新的插入操作,MySQL將嘗試利用這些留空的區域,但仍然無法將其徹底占用。
針對oracle行鏈接和行遷移:新insert的時候,可能發生行鏈接;update已經存在的行時,可能發生行遷移;
行鏈接產生在第一次插入數據的時候如果一個block不能存放一行記錄的情況下。這種情況下,Oracle將使用鏈接一個或者多個在這個段中保留的block存儲這一行記錄,行鏈接比較容易發生在比較大的行上,例如行上有LONG、LONG RAW、LOB等數據類型的字段,這種時候行鏈接是不可避免的會產生的。
當一行記錄初始插入的時候事可以存儲在一個block中的,由于更新操作導致行長增加了,而block的自由空間已經完全滿了,這個時候就產生了行遷移。在這種情況下,Oracle將會遷移整行數據到一個新的block中(假設一個block中可以存儲下整行數據),Oracle會保留被遷移行的原始指針指向新的存放行數據的block,這就意味著被遷移行的ROW ID是不會改變的。
當發生了行遷移或者行鏈接,對這行數據操作的性能就會降低,因為Oracle必須要掃描更多的block來獲得這行的信息。
總結:原來mysql也有類似于oracle的undo表空間,也就是innodb共享表空間(ibdata1),默認就是自動擴展的,每次擴展8M,共享表空間類似于oracle的表空間,可以實現把mysql的數據和索引放到不同的磁盤下,分散io,進而提高性能,就是不像oracle那樣可以動態的給表空間添加文件,mysql如果想要添加共享表空間的文件,需要重啟mysql服務才能生效。
 

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产在线精品一区二区不卡| 18 激情视频在线| 青娱乐在线视频观看| 在线一二三区| 精品国语对白精品自拍视| 精品一区二区在线欧美| 精品福利视频导航大全| 精品国产高清自在线一区二区三区 | 亚洲精品在线视频免费| 亚洲精品影院在线| 男人天堂v视频| 中文字幕在线第一页| 国产成人综合亚洲欧美在| 99久久国产视频| 女同一区二区免费aⅴ| 国产视频福利| www.eeuss影院| 九色在线网站| 91在线高清| 国产九色视频| 日本不卡视频一区二区| 欧美卡一卡二| 国产黄色在线看| 九九久久久2| 伊人网在线视频| 尤物免费看在线视频| 精品国内一区二区三区免费视频| 亚洲精品手机在线| 国产欧美日韩第一页| 免费av在线| 午夜影院在线免费观看| 91精品专区| 国产尤物一区二区三区| 精品国产一区二区三区四区阿崩| 成人超碰在线| 麻豆电影传媒二区| 在线观看中文字幕一区| 国产精品久久在线| 国产在线第一页| 久久久久久久久免费视频| 一区二区三区免费视频网站| 中文字幕网在线| 最近中文av字幕在线中文| h网站久久久| 亚洲欧美精品中文第三| 99中文字幕一区| 99久久精品免费观看国产| 国产系列在线观看| 国产视频第一区| 中文字幕在线播放网址| 中文字幕有码在线视频| 国产在线中文字幕| 成人超碰在线| 国产私人影院| 国产成人综合亚洲欧美在| 国产黄色在线看| av激情在线| 亚洲综合在线网| 欧美日韩不卡中文字幕在线| 九色在线网站| 国产秀色在线www免费观看| 国产亚洲精品午夜高清影院| 天天av天天爽| 国产导航在线| 日韩国产成人| 国产在线视频福利| 九九热视频免费观看| 成人免费一区二区三区牛牛 | 麻豆福利在线观看| 国产一级免费在线观看| 91中文字幕| 麻豆av在线| 精品黄色免费中文电影在线播放| www.三区| 国产精品麻豆一区二区三区 | 中文字幕av中文字幕| 国产黄色片中文字幕| 亚洲国产精品区| 国产色在线播放| 超碰国产在线| 在线a人片免费观看视频| 国产免费麻豆视频| 在线国产一级| 国产福利在线观看| 国产在线中文字幕| av在线不卡免费| 国产激情网址| 九九视频在线播放| 亚洲精品久久久成人| 国产精品视频一区麻豆| 青青草在线免费观看| 国产精彩视频在线观看免费蜜芽| 国产中文伊人| xxxxx中文字幕| 精品亚洲成a人片在线观看| 99视频免费| 九色视频网站| 超碰国产在线| 九九热在线观看视频| 秋霞av在线| 亚洲欧美日韩一区成人| 中文av在线播放| 777电影在线观看| 99reav| 夜夜操com| 亚洲尤物在线视频| 日本啊v在线| 欧美啪啪精品| 久久亚洲国产成人亚| 另类视频在线| 中文字幕日本在线| 国产高清在线视频| 亚洲www色| 免费在线黄色网址| 黄色av网址在线免费观看| 国产又色又爽又黄刺激在线视频| 国产在线一二三区| 国产区视频在线观看| 99re热在线观看| 国产有码在线| 中文字幕不卡| 亚洲国产日韩在线人成电影| 国产69久久| 中文字幕2019第三页| 伊人影院在线播放| xxxx视频在线| 国产精品自产拍在线观看2019| 成在在线免费视频| 国产精品国精产品一二| 在线中文字幕av| 国产卡一卡二卡三| 夜夜嗨yeyeh| 国产男女av| 在线视频三级| 九色精品视频在线观看| 久热中文字幕| 国产高清视频在线| 非洲黑人最猛性xxxx交| 亚洲日本伊人| 国产成人午夜| 国产九色视频| 欧洲有码在线视频| 在线中文字幕观看| 国产网站av| 丁香花视频在线观看| 精品a在线观看| 国产无遮挡在线视频免费观看| 人xxxx性xxxxx欧美| 国产成在线观看免费视频| 久蕉依人在线视频| 成人av小说网| www.毛片| 超碰在线影院| 国产高清视频在线观看| 免费a级在线播放| 在线午夜影院| 中文字幕在线播放网址| 久久亚洲资源| 九九免费视频| 波多野结衣中文字幕久久| 亚洲精品一线| 精品国产美女福利到在线不卡| 午夜国产福利在线| 国产蜜臀av在线播放| 黄色av网址在线免费观看| 免费国产视频| 在线视频1区2区| 精品无吗乱吗av国产爱色| 国产青青视频| 国产黄色在线免费观看| 国产欧美一区二区三区小说| 国产性一级片| 国产国产国产国产国产国产 | 精品一二三四| 2019中文字幕在线电影免费| 中文字幕在线免费| 国产精美视频| 国产黄色片中文字幕| 国产午夜视频| 国产黄色在线网站| 中文字幕成人乱码在线电影| 国产激情自拍| 日本一本久久| 丁香视频免费观看| 最近中文字幕在线中文视频| 中文字幕久热在线精品| 91免费日韩| 久久精品视频观看| 国产福利在线看| 日本国产在线| 国产极品视频| 男人天堂v视频| 久草视频国产| 精品卡一卡卡2卡3网站| 日本aⅴ写真网站免费| 国产香蕉在线| 麻豆网站在线| aaa大片在线观看| 国产精品一二三区视频| 一级二级三级在线观看|