mysql 系統(tǒng)表為什么不用innodb MYsql選擇哪個(gè)版本?
MYsql選擇哪個(gè)版本?在舊版MySQL 3.22中,MySQL的單表限制是4GB,當(dāng)時(shí)MySQL的存儲(chǔ)引擎是ISAM存儲(chǔ)引擎。但是當(dāng)MyISAM存儲(chǔ)引擎出現(xiàn)的時(shí)候,也就是從MySQL 3.23開(kāi)始,
MYsql選擇哪個(gè)版本?
在舊版MySQL 3.22中,MySQL的單表限制是4GB,當(dāng)時(shí)MySQL的存儲(chǔ)引擎是ISAM存儲(chǔ)引擎。
但是當(dāng)MyISAM存儲(chǔ)引擎出現(xiàn)的時(shí)候,也就是從MySQL 3.23開(kāi)始,MySQL單表的最大限制已經(jīng)擴(kuò)展到了64PB(官方文檔顯示)。也就是說(shuō),從目前的技術(shù)環(huán)境來(lái)看,MySQL數(shù)據(jù)庫(kù)的MyISAM存儲(chǔ)引擎的單個(gè)表大小限制不是由MySQL數(shù)據(jù)庫(kù)本身決定的,而是由主機(jī)OS上的文件系統(tǒng)決定的。MySQL的另一個(gè)最流行的存儲(chǔ)引擎Innodb有兩種存儲(chǔ)策略,一種是共享表空間存儲(chǔ),另一種是獨(dú)占表空間存儲(chǔ)。在使用共享表空間存儲(chǔ)模式時(shí),Innodb的所有數(shù)據(jù)都存儲(chǔ)在單個(gè)表空間中,而這個(gè)表空間可以由多個(gè)文件組成,一個(gè)表可以跨多個(gè)文件存在,所以它的大小限制不再是文件大小限制,而是它自己的限制。從Innodb的官方文檔可以看出,最大表空間限制是64TB,也就是說(shuō)Innodb的單個(gè)表限制基本在64TB左右,當(dāng)然這個(gè)大小包括了這個(gè)表的所有索引以及其他相關(guān)數(shù)據(jù)。但是,當(dāng)使用獨(dú)占表空間存儲(chǔ)Innodb表時(shí),每個(gè)表的數(shù)據(jù)都存儲(chǔ)在一個(gè)單獨(dú)的文件中。此時(shí),單個(gè)表的限制變成了文件系統(tǒng)的大小限制。
mysql分區(qū)可以支持多少數(shù)據(jù)?
Mysql每個(gè)數(shù)據(jù)庫(kù)最多可以創(chuàng)建20億個(gè)表,一個(gè)表允許1024列,每行最大長(zhǎng)度為8092字節(jié)(不包括文本和圖像類(lèi)型的長(zhǎng)度)。Sql s
MySQL中關(guān)于臨時(shí)表的一些基本使用方法?
讓 讓我們先談?wù)勁R時(shí)表的概念。顧名思義,臨時(shí)表是臨時(shí)的,銷(xiāo)毀的表就用完了。數(shù)據(jù)可以存儲(chǔ)在臨時(shí)文件系統(tǒng)或固定磁盤(pán)文件系統(tǒng)中。臨時(shí)表如下:
1個(gè)全局臨時(shí)表
這個(gè)臨時(shí)表在數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)后生效,在數(shù)據(jù)庫(kù)實(shí)例銷(xiāo)毀后失效。在MySQL中,這個(gè)臨時(shí)表對(duì)應(yīng)的是內(nèi)存表,也就是內(nèi)存引擎。
2會(huì)話級(jí)臨時(shí)表
該臨時(shí)表在用戶(hù)成功登錄系統(tǒng)后生效,在用戶(hù)退出時(shí)失效。MySQL中的臨時(shí)表是指用cr:/usr/local/mysql/data# ln-s/run/shm//usr/local/MySQL/data/tmp _ spac:/usr/local/mysql/data#ls-l | gr: 28 tmp _ space 2-gt/run/shm/
然后把
innodb _ temp _ data _ file _ path tmp _ spac: 200 m: auto extend
添加到中[mysqld]下面的行。
重啟MySQL服務(wù)后,
mysqlgtselect @ @ innodb _ t: tmp _ spac: 200 m: auto extend
1行一組(0.00秒)
編寫(xiě)一個(gè)存儲(chǔ)過(guò)程來(lái)批量創(chuàng)建臨時(shí)表:
分隔符$$
使用` t_girl`$$
drop procedure IF EXISTS ` sp _ create _ temporary _ table ` $ $
CREATEDEFINER`root`@`localhost `過(guò)程` sp_create_temporary_table `(
IN f_cnt INT UNSIGNED)
開(kāi)始
聲明i INT無(wú)符號(hào)默認(rèn)值1
當(dāng)我離開(kāi)時(shí)
防御命令(Defense Order)
SET @ stmt CONCAT(create temporary table tmp,I,(id int,tmp_desc varchar(60))
從@stmt準(zhǔn)備s1
執(zhí)行s1
集合i i 1
結(jié)束時(shí)間
丟棄準(zhǔn)備s1
結(jié)束$$
定界符
現(xiàn)在創(chuàng)建10個(gè)臨時(shí)表:
mysqlgtcall sp _ create _ temporary _ table(10)
QueryOK,0行受影響(0.07秒)
如果在以前,我們只知道創(chuàng)建了10個(gè)臨時(shí)表,但只能靠記憶或手工記錄臨時(shí)表的名稱(chēng)等信息。
現(xiàn)在,您可以直接從數(shù)據(jù)字典中檢索相關(guān)數(shù)據(jù)。
mysqlgt select * from information _ _ temp _ table _ info
- - - - - --
| TABLE _ ID | NAME | N _ COLS | SPACE | PER _ TABLE _ TABLESPACE | IS _ COMPRESSED |
- - - - - -
| 56 | # SQL 1705 _ 2 _ 9 | 5 | 36 | FALSE | FALSE |
| 55 | # SQL 1705 _ 2 _ 8 | 5 | 36 | FALSE | FALSE |
| 54 | # SQL 1705 _ 2 _ 7 | 5 | 36 | FALSE | FALSE |
| 53 | # SQL 1705 _ 2 _ 6 | 5 | 36 | FALSE | FALSE |
| 52 | # SQL 1705 _ 2 _ 5 | 5 | 36 | FALSE | FALSE |
| 51 | # SQL 1705 _ 2 _ 4 | 5 | 36 | FALSE | FALSE |
| 50 | # SQL 1705 _ 2 _ 3 | 5 | 36 | FALSE | FALSE |
| 49 | # SQL 1705 _ 2 _ 2 | 5 | 36 | FALSE | FALSE |
| 48 | # SQL 1705 _ 2 _ 1 | 5 | 36 | FALSE | FALSE |
| 47 | # SQL 1705 _ 2 _ 0 | 5 | 36 | FALSE | FALSE |
- - - - - -
一組10行(0.00秒)
我 我將在這里停止功能。如果對(duì)性能感興趣,可以找時(shí)間測(cè)試一下。