锁的种类(mysql)
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。
优化方式
1.尽量减少查询出来的字段
2.合理的表设计
3.使用存储过程
4.给字段加索引
- ISAM
ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源
ISAM的两个主要不足之处在于,它不支持事务处理,也不能够容错
备份你所有的实时数据,通过其复制特性,MYSQL能够支持这样的备份应用程序
只支持表级锁
- MYISAM
MYISAM是MYSQL的ISAM扩展格式和缺省的数据库引擎
MYISAM强调了快速读取操作,这可能就是为什么MYSQL受到了WEB开发如此青睐的主要原因:在WEB开发中你所进行的大量数据操作都是读取操作。所以,大多数虚拟主机提供商和INTERNET平台提供商只允许使用MYISAM格式。
其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间
表级锁
- HEAP
EAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MYISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失
- INNODB和BERKLEYDB
比ISAM和MYISAM引擎慢很多,但是INNODB和BDB包括了对事务处理和外来键的支持,这两点都是前两个引擎所没有的
BDB支持页级锁和表级锁默认为页级锁
InnoDB支持行级锁和表级锁默认为行级锁