影响性能的几个方面
1.服务器硬件
2.服务器系统(系统参数优化)
3.存储引擎
myisam:不支持事务,表级锁
innodb:支持事务,支持行级锁,事务acid
4.数据库参数配置
5.数据库结构设计和sql语句
innodb存储引擎特性
事务性存储以及两个特殊的日志类型
完全支持acid。
redo log:实现事务的持久性(已提交的事务),记录某数据块被修改后的值,可以用来回复未写入data file的已成功事务更新的数据
undo log: 未提交的事务,独立于表空间,需要随机访问。记录数据被修改前的值,可以用来在事务失败时进行rollback。
支持行级锁,可以更大程度的支持并发,行级锁是存储引擎实现的。(表级锁通常在服务器实现)
阻塞和死锁
阻塞:由于资源不足引起的排队等待现象
死锁,deadlock,两个或者两个以上的进程在执行过程中,因为争夺资源而造成的一种相互等待的现象,若无外力作用,都将无法推进下去。表级锁不会产生死锁,innodb的行级锁才有死锁。
解除死锁
方法一:
1.查询是否锁表
show open tables where in_use > 0;
2.查询进程
show processlist;
3.kill 进程id
kill id;
方法二:
1。查询当前在锁事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
2.kill 进程id
kill id;
如何为缓存池分配内存
总内存 -(每个线程需要的内存 * 连接数) - 系统保留内存
转自:芋道源码