共享锁(读锁)的优先级高于排他锁(写锁),因此并发时读取操作会被优先执行;
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表中对于不经常改变数据可以进行压缩,压缩后即可以减少磁盘开销,也可以减少获取数据时寻址的开销;