- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 InnoDB执行引擎的BufferPool缓存机制
这么复杂的机制,是为了保证并发,因为硬盘的随机读写性能是非常差的,通过这样的机制,可以保证数据不被丢失的同时,有很高的读写性能,可以在较高机器配置下抗下几千的读写请求。Mysql这套机制可以保证每个更新请求都是先更新内存BufferPool,然后顺序写日志,保证各种异常情况的数据一致性。...
2020-09-24 23:10:54 172
原创 Mysql MVCC多版本并发控制
Mysql MVCC多版本并发控制简介Undo日志版本链与read view机制详解一致性视图 read-view构成可重复读和读已提交差别比对规则总结简介Mysql在可重复读级别下,同样的sql在一个事务里面多次执行查询结果相同,即使有其他事务对数据有修改也不会影响当前事务的查询结果。这个隔离就是通过MVCC(多版本并发控制 Multi-Version Concurrency Control),对同一行的数据的读和写两个操作是不会通过加锁互斥来保证隔离性,避免频繁加互斥锁。串行化隔离级别为了保证隔
2020-09-24 23:05:02 121
原创 Mysql锁学习笔记
Mysql锁学习笔记锁分类表锁行锁总结行锁与事务隔离级别案例分析读未提交:读已提交可重复读串行化间隙锁(Gap Lock)临键锁(Next-key Locks)Mysql锁其他特点锁主要是加在索引上,如果对非索引字段更新,行锁可能会变表锁锁优化建议锁分类从性能上分,乐观锁和悲观锁从对数据库操作上分,读锁和写锁(都是悲观锁)读锁 (共享锁,shared锁)多个会话可以同时读,不能写写锁 (排它锁,exclusive锁)只有一个会话可以读写,其他会话阻塞,知道当前获取的会话释放锁,其他会话才能执行
2020-09-20 15:58:14 153
原创 Mysql事务隔离
Mysql事务隔离事务隔离为什么要有事务隔离事务及其ACID属性事务并发带来的问题事务隔离为什么要有事务隔离数据库会并发执行多个事务,不同的事务可能会对同一批数据进行增删改查操作,就会引起数据脏写、脏读、不可重复读、幻读等情况。本质上都是由于事务之间的并发导致,简单点说就是事务之间互相影响,导致数据不一致问题。事务隔离机制就是解决多事务并发的一种方式。事务及其ACID属性事务是由一组sql组成的逻辑处理单元。具有ACID四个属性:原子性(Atomicity) 事务是一个原子操作单元,不可分割
2020-09-18 00:16:57 59
原创 Java synchronized学习
synchronized简介静态方法加锁一般方法加锁实现原理代码块加锁实现原理Monitor对象对象内存布局1. 对象头(Header)2. 实例数据(Instance Data)3. 对齐填充(Padding)锁的升级过程偏向锁轻量级锁自旋锁重量级锁锁消除逃逸分析优化简介synchronized修饰符是Java提供的多线程访问临界资源的同步器,一般我们有三种使用方式:对类的静态方法加锁对类的一般方法加锁对代码块加锁静态方法加锁静态方法是属于类的,所以这种加锁实际上对类进行加锁,加锁对象为
2020-09-13 18:13:09 112
原创 AQS学习
文章目录AQS是啥特性主要属性1.状态2.阻塞队列自定义需要实现的方法isHeldExclusively()tryAcquire(int)tryRelease(int)tryAcquireShared(int)tryReleaseShared(int)需要注意的地方AQS是啥AQS (Abstract Queue Synchronizer),抽象队列同步器,定义了一套多线程访问共享资源的同步器框架,是一个依赖状态的同步器。特性阻塞等待队列共享/独占公平/非公平可重入允许中断主要属性1
2020-09-08 21:21:08 102
原创 JAVA线程池
JAVA线程池为啥要用线程池什么时候使用线程池线程池主要方法线程池状态线程池创建1. corePoolSize 核心线程数2. maximumPoolSize 最大线程数3. keepAlivetime 线程最大空余时间4. workQueue 等待线程队列5. threadFactory 线程工厂6. handler 拒绝策略为啥要用线程池JAVA虚拟机线程实现是KLT模型,与OS线程是1:1的映射关系,就是使用内核态线程来实现虚拟机线程,所以线程的创建、调度、销毁都需要切换到内核态,所以线程是稀
2020-09-01 21:16:25 96
遗传算法MATLAB代码
2012-11-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人