数据库的隔离性 前言 大多数数据库都是支持多个客户端同时访问。如果读取得是不同得数据,那肯定没有什么问题;但如果访问相同得记录,就可能遇到并发问题。 而且,网上大部分的文章都是谈论 “读-写并发“带来的问题,但”写-写并发“讨论的很少。再进一步说,对于幻读,解决的办法一般也是指可串行化,但是2PC的可串行化会让数据库的效率很低很低。 因此,下面想谈谈数据库的隔离性。 2021-10-05 MySQL
结合内核态和线程结构谈谈 --- 为什么线程切换比进程快? 前言 看过之前两篇文章,应该都大致了解了两件事情。 在Linux系统里面,进程线程几乎没有区别,没有为线程设置额外的调度算法,数据结构 进程/线程调度其实经历这几个阶段 进程A —> 陷入到内核态,内核进程A 内核进程A —> 进程调度器 —> 内核进程B 内核进程B —> 进程B 既然如此必然经过页表,跟栈的切换 之后,我思 2021-10-04 Operate System
浅谈用户态和内核态以及系统调用 前言  为了保证操作系统的强隔离性,设计者实现了“supervisor mode” 和 “虚拟内存”,来保证进程之间互相隔离。   我们可以认为user/kernel mode是分隔用户空间和内核空间的边界,用户空间运行的程序运行在user mode,内核空间的程序运行在kernel mode。操作系统位于内 2021-10-03 Operate System MIT6.S081
进程和线程的区别 前言 一般来说,很多人都是认为进程跟线程的区别是这样的。进程是资源分配的基本单位,线程是CPU调度的基本单位。 虽然,这个说法没什么错。可是实际上,在Linux / Unix这样的操作系统中,进程和线程之间的区别并没有想像中那么大。他们都是用同一种结构体进行描述的,并且创建进程和线程所使用的函数或者说创建进程线程的过程非常类似。 所以说,我们其实可以认为,进程 2021-10-03 Operate System
why B+ tree? 数据库的索引,我想都并不陌生,简单来说,索引的出现就是为了帮助更快的进行查询。索引就像书的目录一样,帮助你快速定位想要的章节所在的地方。 索引能用的数据结构有很多,hash,有序数组,二叉树平衡树,红黑树,B树,B+树……但是为什么innodb引擎,最后选择B+树作为索引?下面我们来聊聊索引的各种优缺点 Hash索引 索引 - 记录所在的位置,实质上很像很像一种 K-V 2021-10-02 MySQL