mysql MYISAM表批量壓縮

2021-06-18 03:28:09 字數 870 閱讀 5797

關於對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資料檔案中直接定位到具體的資料記錄了。當我們為某個字段新增...