返回首页        友情链接        网站地图对数据表进行维护最好通过发出CHECK TABLE(检查数据表)或REPAIRE TABLE(修复数据表)命令来做,这样MySQL服务器自动进行表锁定以协调数据表中数据的读写一致性问题。也可用myisamchk工具来做数据表的维护,但它直接访问有关的数据表文件,不通过服务器,所以需人为地协调数据表数据的读写一致性问题。使用myisamchk检查数据表的具体操作步骤如下: 
以mysql客户端程序连接服务器,并发出LOCK TABLE命令,以只读方式锁住数据表。 
% mysql 
mysql> use db 
mysql> LOCK TABLE table_name READ; #以只读方式锁定表 
mysql> FLUSH TABLE table_name; #关闭数据表文件,并把内存中的信息写入磁盘 
保持上面的状态不退出,另开一个shell窗口,用以下命令维护(检查)数据表。 
% myisamchk table_name 
如果不保持上面状态,退出mysql会话,则表锁定会自动取消。 
维护完成,切换回mysql状态的shell窗口,发出以下命令解除表锁定。 
mysql> UNLOCK TABLES; 
使用myisamchk修复数据表的具体操作步骤如下: 
进行修复操作需以读/写方式锁定数据表,命令如下: 
% mysql 
mysql> use db 
mysql> LOCK TABLE table_name WRITE; #以读/写方式锁定数据表 
mysql> FLUSH TABLE table_name; 
保持mysql客户端连接状态,切换到第二个shell窗口,运行修复命令: 
% myisamchk --recover table_name 
运行修复命令前最好先备份一下数据文件。 
修复完成后,切换回mysql客户端连接窗口,运行以下命令解除数据表锁定: 
mysql> FLUSH TABLE table_name; #使服务器觉察新产生的索引文件 
mysql> UNLOCK TABLE; 
还可用以下命令锁定所有表,锁定后,所有用户就只能读不能写数据,这样就可使我们能安全地拷贝数据文件。 
mysql> FLUSH TABLES WITH READ LOCK; 
下面是解除锁语句: 
mysql> UNLOCK TABLES;