首页 > 数据库 > 文库 > 正文

MyISAM表

2024-09-07 22:12:55
字体:
来源:转载
供稿:网友
        MyISAM表:

  1.不支持事务
 
  MyISAM:对整张表进行加锁,锁全表而不是行。在读数据的时候,所有的表上都可以获得共享锁(读锁),每个连接都不互相干扰。在写的时候,或者排他锁,会把整个表进行加锁,而其他的连接请求(读和写)都处于等待。
  MySQL的表级锁有两种模式:表共享读锁(Table Read Lock)和表独占写锁(Table Write Lock)。MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁。
 
  所以对MyISAM表进行操作,会有以下情况:
  a、对MyISAM表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其它进程的写操作。
  b、对MyISAM表的写操作(加写锁),会阻塞其他进程对同一表的读和写操作,只有当写锁释放后,才会执行其它进程的读写操作。
 
  2.MyIASM的修复表
  [root@MyO test]# echo "a" >> myisam_tab.MYD
  mysql> check table myisam_tab;
  +-----------------+-------+----------+---------------------------------------------------+
  | Table           | Op    | Msg_type | Msg_text                                          |
  +-----------------+-------+----------+---------------------------------------------------+
  | test.myisam_tab | check | warning  | Size of datafile is: 102       Should be: 100     |
  | test.myisam_tab | check | error    | got error: 120 when reading datafile at record: 5 |
  | test.myisam_tab | check | error    | Corrupt                                           |
  +-----------------+-------+----------+---------------------------------------------------+
  3 rows in set (0.01 sec)
 
  mysql> repair table myisam_tab;
  +-----------------+--------+----------+----------+
  | Table           | Op     | Msg_type | Msg_text |
  +-----------------+--------+----------+----------+
  | test.myisam_tab | repair | status   | OK       |
  +-----------------+--------+----------+----------+
  1 row in set (0.01 sec)
 
  mysql> check table myisam_tab;
  +-----------------+-------+----------+----------+
  | Table           | Op    | Msg_type | Msg_text |
  +-----------------+-------+----------+----------+
  | test.myisam_tab | check | status   | OK       |
  +-----------------+-------+----------+----------+
  1 row in set (0.00 sec)

(编辑:武林网)

上一篇:存储过程定义语法

下一篇:MHA基础常识

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表