MySQL最重要的特性是:存储引擎架构,该架构将查询处理和其他系统任务和数据的存储、提取 相分离 。所以根据业务特点选择合适的数据存储方式(即选择存储引擎的类型)
并发情况下如不加以控制,则会对数据产生不一致的结果和意料之外的事情,通常使用锁来控制
存储引擎可以实现自己的锁策略和锁粒度
表锁
- MySQL最基本的锁策略也是开销最小的锁策略,但并发能力降低
- 顾名思义,加锁是针对表,一旦加锁(写锁),凡是涉及该表的操作都要阻塞等待
行锁
- 最大程度的解决并发处理,但也带来了更大的性能开销
- 针对行级别的加锁解锁操作
事务日志可以提高事务的效率
简单的说就是 MySQL从磁盘拷贝了一份镜像到内存中,当客户端进行数据操作时,操作的是内存中的数据,同时MySQL将该此操作写到磁盘中的日志中。如此多次操作,日志追加了更多内容,待到合适的时候,MySQL会将日志中的操作内容重新持久化到磁盘中,这样就实现了数据的持久化。即便MySQL挂掉,日志没有删除,下次重启的时候,读取日志并把之前的数据操作恢复到磁盘中,实现了数据的一致性。
show variables like ‘default_storage_engine’; //查看默认存储引擎
show variables like ‘autocommit’; //查看事务提交方式
set autocommit = 0或1 0:手动提交事务 1:自动提交事务
set transaction isolation level read commited; //设置事务的隔离级别 四种自选