- 博客(19)
- 收藏
- 关注
原创 Mysql锁与MVCC机制
我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事务隔离机制、锁机制、MVCC多版本并发控制隔离机制,用一整套机制来解决多事务并发问题。事务隔离机制简单可以理解就是为了满足ACID特性而设计的事务隔离级别,这里不做详细解释。本文主要描述Mysql的锁机制以及MVCC机制。未完待续。。。...
2022-03-22 22:08:09
1550
原创 如何写出高性能的SQL
本文部分内容参考《MySQL高性能书籍_第3版(中文)》。前文【Mysql索引的数据结构】介绍了索引的数据结构,以及索引的优点。下面我们来看一下该如何正确的使用索引实现高性能的查询。1、独立的列如果查询中的列不是独立的,Mysql不会使用索引。独立的列是指索引列不能是表达式的一部分,也不能是函数的参数。例如下面的sql无法使用age的索引:SELECT * FROM person WHERE age + 1 = 5;Mysql无法解析这个方程式,我们应该养成将索引列单独放在比较符号的一侧的习惯。
2022-03-21 16:05:26
1858
4
原创 【Mysql索引的数据结构】
1、为什么需要索引以及什么是索引数据的存储最终是落在磁盘上,在磁道上分配了空间存放,且存放的内存空间不一定连续。如果没有索引,在查询数据时,可能每一条数据都会有一次I/O。当数据量比较大的时候,会严重影响性能。因此就需要一个有序的数据结构建立一个列值与原表行记录一一对应的表,也就是索引。换句话说,索引就是帮助mysql高效获取数据的排好序的数据结构。2、索引的选择有序的数据结构可以是二叉树、红黑树、hash、B-tree以及B+tree,这些数据结构如果用作索引,会有什么结果呢?二叉树:对于常规的列
2022-03-17 21:56:45
1600
2
原创 记一次线程池的异常问题
前段时间遇到一个问题,问题的现象如下:有一个线程池,在处理一批业务数据,当程序执行结束之后,我发现有一部分数据并没有被处理,查看日志发现也没有异常日志,经过一段时间排查发现确实是由于我的数据有一个唯一id是由雪花算法生成的,但是生成id的机器码各台机器都是一样的,所以导致数据在插入数据的时候抛了异常,最终这个问题解决了。但是,令我比较疑惑的是,问什么程序出了异常,但是日志里缺一点异常都没有呢?想要解决这个疑惑,只能看源码了。从这里点进去addWorker方法中,最终是在Worker线程中执行任
2022-03-10 16:19:17
553
1
原创 kafka原理及机制学习
1、kafka的核心总控制器Controller与选举机制2、Consumer的rebalance机制3、消费者Rebalance分区分配策略4、producer发布消息机制剖析6、HW与LEO详解7、日志分段存储
2022-02-25 17:52:06
622
原创 再学Kafka
1、kafka中的一些名词术语Broker:消息中间件处理节点,一个Kafka节点就是一个broker,一个或者多个Broker可以组成一个Kafka集群。Topic:Kafka根据topic对消息进行归类,发布到Kafka集群的每条消息都需要指定一个topic。Producer:消息生产者,向Broker发送消息的客户端。Consumer:消息消费者,从Broker读取消息的客户端。ConsumerGroup:每个Consumer属于一个特定的Consumer Group,一条消息可以被多个不
2022-02-22 13:33:04
1134
1
原创 2020-09-26
.+AQS学习记录day1//应用示例// 实例化一个公平锁ReentrantLock reentrantLock = new ReentrantLock(true);reentrantLock.lock();System.out.println(“业务逻辑代码块”);reentrantLock.unlock();原理:公平锁:ReentrantLock 类中存在一个属性sync,这个属性是ReentrantLock的一个内部类,继承了AbstractQueuedSynchronizer
2020-09-26 17:25:41
122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人