關於對myisam表的壓縮,可以使用myisampack和myisamchk完成(myisampack完之後必須進行myisamchk才能使用壓縮後的表,而且是唯讀的), 其詳細地用法可以參考官方文件:
這兩個操作需要謹慎使用,在壓縮之前需要確認mysqld已關閉或者要壓縮的表不會有其他的sql操作;而且壓縮過程會很占用cpu資源,建議在伺服器空閒的狀態進行。
下面是用於實現某資料庫下表壓縮的shell過程(值得注意的是,如果資料量大,建議分多次操作,因其會很耗時):
#!/bin/bash
data_dir="/data/mysql/my_dbname/"
filelist=`ls $data_dir`
echo "myisampack begin."
for filename in $filelist
do idx=`expr match "$filename" ".*.myi"`
if [[ $idx>0 ]]
then
/usr/bin/myisampack $data_dir$filename
fidone
echo "myisampack end. myisamchk begin."
for filename in $filelist
do idx=`expr match "$filename" ".*.myi"`
if [[ $idx>0 ]]
then
/usr/bin/myisamchk -r -o -f --sort-index --analyze $data_dir$filename
fidone
echo "myisamchk end."
mysql MyISAM表的儲存格式
myisam支援三種不同的儲存格式 固定格式,動態格式,已壓縮格式 只能使用myisampack工具來建立 靜態表特徵 固定格式 靜態格式是myisam表的預設儲存格式。當表不包含變數長度列 varchar,blob,或text 時,使用這個格式。每一行用固定位元組數儲存。靜態格式是三種儲存格式中最...
Mysql MyISAM引擎分表(水平拆分)
應用場景 1.查的多,寫的少 基於引擎特性,索引檔案與元資料檔案分別儲存 2.資料量過高 功能介紹myisam引擎分表功能是 基於建立多個子表,由主表關聯而形成的分表功能,該主表可以視為空殼,來引導儲存到子表 表1 create table union user 1 id bigint 21 not...
MySQL myisam表的索引結構以及查詢過程
myisam用的是非聚集索引方式,即資料和索引落在不同的兩個檔案上 myd是資料檔案 myi是索引檔案 myisam在建表時以主鍵作為key來建立主索引b 樹,樹的葉子節點存的是對應資料的實體地址。我們拿到這個實體地址後,就可以到myisam資料檔案中直接定位到具體的資料記錄了。當我們為某個字段新增...