共享锁(读锁)的优先级高于排他锁(写锁),因此并发时读取操作会被优先执行;
MyISAM为表锁,且在运行select操作时,可以在同一张表内插入新行(并发插入,可以稍微提高并发);
mysql支持对MyISAM表的自动检查和自动修复,也可使用CHECK TABLE mytable和REPAIR TABLE mytable手动检查、修复(InnoDB也可以);
InnoDB插入数据时会对数据进行排序,因此大量数据插入时会比较慢(主键存在时按主键排序,无主键时不会自动排序);
mysql> CREATE TABLE `test1` (
-> `id` int(11) DEFAULT NULL,
-> `title` varchar(10) DEFAULT NULL,
-> PRIMARY KEY (`id`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.39 sec)
mysql> INSERT INTO test1 values (30,'php'),(24,'php'),(26,'php');
Query OK, 3 rows affected (0.38 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from test1;
+----+-------+
| id | title |
+----+-------+
| 24 | php |
| 26 | php |
| 30 | php |
+----+-------+
3 rows in set (0.00 sec)
MyISAM表中对于不经常改变数据可以进行压缩,压缩后即可以减少磁盘开销,也可以减少获取数据时寻址的开销;