mysql myisampack_每天进步一点达——MySQL——myisampack
一、簡單介紹
myisampack是一個壓縮使用MyISAM引擎表的工具,通常會壓縮40%~70%,當須要訪問數據。server會將所須要的信息讀入到內存中。所以當訪問詳細記錄時,性能會更好,由于僅僅須要解壓一條記錄
MySQL使用mmap()對變哦進行壓縮映射,假設mmap()不工作,MySQL會返回到普通的讀寫文件操作
壓縮后的表將會成為僅僅讀的,而且myisampack不支持分區表。
二、命令格式
myisampack 選項 文件名稱
三、經常使用參
--backup-b --backup?? 使用tbl_name?.OLD備份數據文件
--force? -f? 產生一個壓縮的表。即使它比原始表大,或假設曾經調用myisampack的中間文件存在。(myisampack壓縮表時在數據庫文件夾中創建一個名為tbl_name.TMD的中間文件。
假設殺掉myisampack。.TMD文件會被刪除)。
通常情況。假設myisampack發現tbl_name.TMD存在則退出并提示錯誤。用--force,myisampack則一定壓縮表。
--join=big_tbl_name? -j big_tbl_name 將命令行中的全部表聯接為一個表big_tbl_name。將要連接的全部表必須有相等的結構(同樣的列名和類型,同樣的索引等等)。
--packlength=len,-p len 指定記錄長度存儲大小,以字節計。
值應為1、2或者3。myisampack保存全部長度指針為1、2或者3字節的行。在大多數正常情況下,myisampack在開始壓縮文件前能夠確定準確的長度值。但在壓縮過程中它能夠提示它可能已經使用了一個短的長度。在這樣的情況下。myisampack輸出一條提示,下次你壓縮同一文件時,你能夠使用更短的記錄長度。
--silent,-s 沉默模式。
僅僅有錯誤發生時才寫輸出。
--test,-t 沒有實際地壓縮表。僅僅是測試壓縮。
--tmpdir=path,-T path 使用myisamchk創建暫時文件的文件夾。
--verbose,-v 冗長模式。寫壓縮操作過程相關信息和其結果。
--version。-V 顯示版本號信息并退出。
--wait,-w 假設表正使用則等待并重試。假設用--skip-external-locking選項調用了mysqldserver。假設在壓縮過程中表可能被更新,調用myisampack不是一個好主意。
執行myisampack后。必須執行myisamchk以又一次創建索引。
此時,你也能夠排序索引塊并創建MySQL優化器須要的統計信息以更有效地工作:? shell> myisamchk -rq --sort-index--analyze tbl_name.MYI 將壓縮的表安裝到MySQL數據庫文件夾中后。應執行mysqladmin flush-tables以強制mysqld使用新的表。? 要想解壓縮一個壓縮的表,使用myisamchk或isamchk的--unpack選項。
--help????? 幫助
四、經常使用樣例
1.???myisampack壓縮表
[root@localhosttest2]# ll -tr
總用量 180
-rw-rw---- 1 mysql mysql???? 65 7月? 16 16:40 db.opt
-rw-rw---- 1 mysql mysql?? 8556 7月? 16 16:46 t1.frm
-rw-rw---- 1 mysql mysql?? 1024 7月? 16 17:29 t1.MYI
-rw-rw---- 1 mysql mysql 161742 7月? 16 17:29 t1.MYD
[root@localhost test2]# myisampack t1
Compressing t1.MYD: (23106 records)
- Calculating statistics
- Compressing file
85.68%
[root@localhosttest2]# ll -tr
總用量 44
-rw-rw---- 1 mysql mysql??? 65 7月? 16 16:40 db.opt
-rw-rw---- 1 mysql mysql? 8556 7月? 16 16:46 t1.frm
-rw-rw---- 1 mysql mysql 23167 7月? 16 17:29 t1.MYD
-rw-rw---- 1 mysql mysql? 1024 7月? 16 17:30 t1.MYI
在Mysql中查詢
mysql>show table status like 't1'\G;
*************************** 1. row***************************
Name: t1
Engine: MyISAM
Version: 10
Row_format: Fixed
Rows: 22857
Avg_row_length: 7
Data_length: 159999
Max_data_length: 1970324836974591
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2015-07-16 16:46:17
Update_time: 2015-07-16 17:29:40
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
ERROR:
No query specified
mysql>show table status like 't1'\G;
*************************** 1. row***************************
Name: t1
Engine: MyISAM
Version: 10
Row_format: Fixed
Rows: 23177
Avg_row_length: 7
Data_length: 162239
Max_data_length: 1970324836974591
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2015-07-16 16:46:17
Update_time: 2015-07-16 17:30:48
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
t8??????lines: 7??????? columns: 9
2.???myisampack備份數據庫文件
[root@localhost test2]# ll
-rw-rw---- 1 mysql mysql????? 65 7月? 16 16:40 db.opt
-rw-rw---- 1 mysql mysql??? 8572 7月? 17 09:28 t1.frm
-rw-rw---- 1 mysql mysql????? 73 7月? 17 09:50 t1.MYD
-rw-rw---- 1 mysql mysql??? 1024 7月? 17 10:04 t1.MYI
-rw-rw---- 1 mysql mysql???? ?217月? 17 09:50 t1.OLD
-rw-rw---- 1 mysql mysql??? 8598 7月? 17 10:10 t2.frm
-rw-rw---- 1 mysql mysql4344192 7月17 10:11 t2.MYD
-rw-rw---- 1 mysql mysql 4955136 7月? 17 10:11 t2.MYI
-rw-rw---- 1 mysql mysql??? 8572 7月? 17 10:06 t3.frm
-rw-rw---- 1 mysql mysql? 147456 7月? 17 10:06 t3.ibd
-rw-rw---- 1 mysql mysql??? 8598 7月? 17 10:11 t4.frm
-rw-rw---- 1 mysql mysql 4344192 7月? 17 10:11 t4.MYD
-rw-rw---- 1 mysql mysql??? 1024 7月? 17 10:11 t4.MYI
-rw-rw---- 1 mysql mysql??? 8598 7月? 17 10:12 t5.frm
-rw-rw---- 1 mysql mysql 1996157 7月? 17 10:12 t5.MYD
-rw-rw---- 1 mysql mysql??? 1024 7月? 17 10:12 t5.MYI
-rw-rw---- 1 mysql mysql4344192 7月17 10:12 t5.OLD
我們發現備份出來的數據文件與原來的文件大小一致。可是壓縮后的數據文件會小一些
3.???向T5中插入數據
mysql> insert into t5(str_number)values(1);
ERROR 1036 (HY000): Table 't5' is read only
總結
以上是生活随笔為你收集整理的mysql myisampack_每天进步一点达——MySQL——myisampack的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里巴巴矢量图标库
- 下一篇: linux cmake编译源码,linu