MySQL_MVCC机制

本文中用到的概念解释 数据读取特性 不可重复读 指一个事务范围内两个相同的查询却返回了不同数据 这是由于查询时系统中其他事务修改的提交而引起的 幻读 在两个连续的查找之间一个并发的修改事务修改了查询的数据集,导致这两个查询返回了不同的结果 这是由于查询时系统中其他事务新增或者删除记录引起的 事务隔离级别 Read Commited(提交读) 一个事务从开始到提交前,所作的任何修改对其他

MySQL InnoDB锁机制

锁 锁是用于管理不同事务对共享资源的并发访问 表锁和行锁的区别: 在加锁效率、锁定粒度以及冲突概率上,表锁肯定是大于行锁的 但是在并发性能上,表锁远低于行锁。 表锁是锁定了整个表,在加锁期间,无论读写,这个表的数据都是锁定的,相反行锁只是锁定了这个表中的一条数据,其他数据仍然可以操作,这就可很好的提高了数据库的并发性能。 关于表级锁 LOCK TABLES [<tb> <lock_type>],... -- 给指定表加锁,使当前客户端会

MySQL什么情况下会造成索引失效

一、准备工作,准备sql 这里我使用的mysql版本是 8.0.19。 CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20), `age` int(11), `address` varchar(25), `crtdate` timestamp, PRIMARY KEY (`id`) USING BTREE ); insert into student(name,age,address,crtdate) values('张三', 15, '山东青岛', now()); insert into student(name,age,address,crtdate) values('李四', 17, '山东济南', now()); insert into student(name,age,address,crtdate) values('王五', 18, '山东潍坊', now()); -- 创建复

MySQL中的索引和Explain的用法

写在前面 日常开发中,当数据体量比较大的时候可能就会遇到慢SQL的问题,找出这些SQL并解决,就会用到explain这个命令来查看一个这些SQL语句的执行计划,看下该命令有没有做全表扫描,有没有走索引,这些都可以通过explain命令来查看。 性能下降原因 执行时间长;等待时间长 查询语句写的差(自身问题); 索引失效(单值索引或复合索引失效); 关联查询太多join(

MySQL事务隔离级别

MySQL事务隔离级别 什么是事务? 数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;事务是一组不可再分割的操作集合(工作逻辑单元) 举个栗子: 事务最经典常用的栗子可能就是转账:一个账户少钱了,哪另一个账户肯定要多钱,李永龙说过,亏本的买卖咱可不干,吃亏了不高兴! 所以,少钱和多钱这两个操作,要么同时成功,要么同时失败! MySQL中如何开启事务? 手

MySQL B-Tree和B+tree

B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。 B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。 在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来。 二叉查找树 定义 二叉树具有以下性质: 左子

Linux内核空间与用户空间

用户空间与内核空间 我们知道现在操作系统都是采用虚拟存储器 ,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次 方)。 操心系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。 为了保证用户进程不能直接操作内核,保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分 为用户空间。针对

ELK入门

介绍 ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称(但是后期出现的filebeat(beats中的一种)可以用来 替代logstash的数据收集功能,比较轻量级)。市面上也被成为Elastic Stack。 Logstash是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢 的

Dubbo入门

Dubbo核心概念 Dubbo官网: https://dubbo.apache.org/zh/ Dubbo 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,服务自动注册和发现。分布式系统是将一个系统拆分为多个不同的服务。 该图来自Dubbo官网,描述了服务注册中心、服务提供方、服务消费方、服务监控中心之间的调用关系。 服务提供者(Provider):暴露服务的服务提供

数据库连接池的一些理解

数据库连接池的作用 对于复杂业务场景下的应用,会需要频繁访问数据库资源。在这种场景下,频繁的建立、关闭数据库连接会对系统的性能照成极大的影响。为了解决这个性能瓶颈,可以考虑实现对数据库资源–连接的复用。对于数据库这类共享资源,有一个经典的设计模式:资源池。将资源池的设计理念引入数据库连接管理层面,就得到了数据库连接池。数据库连接池的目的是为了提供一套高效的连接