本文為大家分享了解決Mysql存儲引擎MyISAM常見問題的方法,供大家參考,具體內容如下
一、處理MyISAM存儲引擎的表損壞
在使用MySQL,可能會遇到過MyISAM存儲引擎的表損壞的情況。如以下情況:
.frm被鎖定不能修改
找不到.myi文件(索引文件)
意外結束記錄
文件被毀壞
從表處理器得到錯誤nnn
解決辦法1:
使用MySQL自帶的myisamchk工具進行修復
打開bin目錄,可以看到該工具
命令如下
myisamchk -r tablename
r代表recover
或
myisamchk -o tablename
-o參數代表–safe-recover 可以進行更安全的修復
解決辦法2:
使用MySQL的CHECK table和repair table命令進行修復
check table用來檢查表是否有損壞,repair table用來對壞表進行修復。
二、MyISAM表過大,無法訪問問題
首先我們可以通過myisamchk命令來查看MyISAM表的情況。如下圖,我查看admin表
datefile length代表當前文件大小
keyfile length代表索引文件大小
max datefile length 代表最大文件大小
max keyfile length 代表最大索引大小
可以通過如下命令來進行擴展數據文件大小
alter table table_name MAX_ROWS=88888888 AVG_ROW_LE=66666
三、數據目錄磁盤空間不足
1、針對MyISAM存儲引擎
可以將數據目錄和索引目錄存儲到不同的磁盤空間。
2、針對InnoDB存儲引擎
對於InnoDB存儲引擎的表,因為數據文件和索引文件時存放在一起的。所以無法將他們分離。當磁盤空間出現不足時候,可以增加一個新的數據文件,這個文件放在有充足空間的磁盤上。具體實現是通過InnoDB_data_file_path中增加此文件。
innodb_data_file_path=/home/mysql/data:10000M;/user/mysql/data:10000M:autoextend
參數修改之後,需要重啟服務器,才可以生效。
四、同一台主機上安裝多個Mysql
除了每個Mysql安裝目錄不能相同外,還需要的是port和socket不能一樣。
mysql.sock就是客戶端連接與mysql間通信用的。socket文件,只能本機使用,遠程連接要通過tcp/ip了。
以上就是Mysql存儲引擎MyISAM常見問題解析,謝謝大家的閱讀。