Mysql
我们平常的时候写sql都是很行云流水的,但是触及到底层做性能优化往往并不是很顺利,此专栏将主要围绕mysql底层知识做一个简单易懂的讲解,方便大家更加清晰的对于mysql的底层有一个深入的印象
2NaCl
主攻Java后端开发与云计算Paas平台、离线大数据平台相关
展开
-
为什么表数据删掉一半,表文件大小不变?
当我们的数据库存储了一些已经不需要的数据,我们需要清除节省空间之后,会发现,表文件的占用大小还是不变的,那么这是为什么呢?那么今天就来围绕着数据库表的空间回收,看看如何处理这个问题。首先,还是针对应用最广泛的InnoDB存储引擎进行分析这个问题,一个InnoDB分为两个部分,也就是定义表结构和数据。在Mysql8.0之前,表的结构数据存在.frm的文件里,而Mysql8.0版本开始,这些数据就...原创 2019-08-04 12:53:18 · 1002 阅读 · 0 评论 -
行锁功过:怎么减少行锁对性能的影响?
昨天,主要介绍了全局锁的特性,又与其他功能相同的方法做了对比,然后又讲了表级锁的两种类型,今天就来说一下Mysql的行锁。行锁是在引擎层由各个引擎自己实现的。但是并不是所有的引擎都支持行锁,MylSAM就不支持。不支持意味着并发控制职能使用表锁,而对于这种引擎的表,同一张表任何时刻职能有一个更新在执行,这就会影响到业务并发度。InnoDB是支持行锁的,这也是MylSAM被舍弃的原因之一。所以进...原创 2019-07-28 14:02:15 · 189 阅读 · 0 评论 -
全局锁和表锁 :给表加个字段怎么有这么多阻碍?
不论是我们平时接触到的synchronized还是ReentrantLock等等锁,都是为了解决业务中并发的问题,而数据库中也是如此,mysql里面的锁大致分为三种,全局锁,表级锁和行锁三类。今天这篇文章,将会和你分享全局锁和表级锁。锁的设计是很复杂的,专栏会主要围绕碰到锁的现象和其背后的原理。全局锁全局锁就是整个数据库实例枷锁。Mysql提供了一个加全局读锁的方法,命令是Flush tab...原创 2019-07-27 18:33:23 · 243 阅读 · 0 评论 -
深入浅出索引(下)
上一专栏我们主要讲了索引不同的种类和对应的原理方法,优缺点这样的特性,并且还知道了主键索引和非主键索引的区别,应用场景等 一系列的话题让我们了解了索引,接下来,将会更加深入的了解索引。...原创 2019-07-26 12:08:44 · 115 阅读 · 0 评论 -
深入浅出索引(上)
我们都知道数据库的索引是用来提升检索速度的,但是索引究竟内部是怎么工作的呢,就来说说这个话题8索引就像书的目录一样,帮助我们更快的查找到我们需要的数据。索引的常见类型索引的种类有很多种,接下来主要介绍三种常见,也比较简单的数据结构,分别是哈希表,有序数组和搜索树。然后从使用的角度分析一下,三者的区别:...原创 2019-07-23 12:19:07 · 130 阅读 · 0 评论 -
事务隔离:为什么你改了我还看不见?
提到事务,必然会联想到和数据库打交道的时候,如果要给同学转账的话,我们要经历几个步骤:查询余额,账户金额扣除与增加,余额更新并保存等等几个步骤。对于一个人来说,理解起来,实现起来都很简单,不就是有钱扣钱,没钱throw一个RuntimeException嘛,扣完钱做个加减法save一下。但是如果是在蚂蚁金服这种大公司的话,就会乱了。所以就会涉及到事务的概念,简单来说,事务是来保证一组数据库操作,...原创 2019-07-22 16:51:54 · 235 阅读 · 0 评论 -
日志系统:一条SQL更新语句是如何执行的?
前面的专栏,我们知道了一个select语句的查询过程,我们知道当连接器连接完成之前先会查询缓存,如果有就会快很多,但是频繁的update操作又会让查询缓存很鸡肋,如果查询不到就会进入分析环节和优化环节,最后是执行环节,这样一个sql语句就执行完了,那么这次我们就来说一下,更新语句的执行过程。mysql可以恢复到半个月内任何一秒的状态,那么这是怎么做到的呢?首先还是从,一个普通的update语句...原创 2019-07-21 15:50:26 · 159 阅读 · 0 评论 -
一条SQL查询语句是如何执行的?
我们在写sql的时候crud这些基本的操作想必大家已经是得心应手了,专栏会更倾向于sql优化与运行过程模型的角度重新学习sql,方便大家在做性能优化上更加熟练。专栏的第一篇文章,首先从最简单的sql语句入手:select * from T where ID=10;接下来我们来拆解一下这个sql语句,从中就可以看出sql在mysql中各个模块的执行过程。总体来说,mysql分为了Serv...原创 2019-07-20 14:21:23 · 172 阅读 · 0 评论 -
Mysql数据库索引的实现——B more tree
身为一名java开发工程师,拥有对于数据库的牢靠掌握是十分重要的,尤其是对于索引的掌握,更为重要,那么索引的底层是如何实现的呢,就来看看这篇违章的Mysql索引底层讲解吧。此篇文章我们要解决两个问题,第一是数据库索引是如何实现的?第二是底层使用的是什么数据结构和算法?算法解析1. 解决问题的前提是定义清除问题该如何定义清除问题所在?除了对于问题有详细的调研,还有一个办法,那就是通过对于一些...原创 2019-09-03 00:13:15 · 180 阅读 · 0 评论 -
mysql alter关键字使用笔记
文章目录alter删除字段i添加字段修改字段类型及名称ALTER TABLE 对 Null 值和默认值的影响修改字段默认值修改表名alter当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。开始本章教程前让我们先创建一张表,表名为:testalter_tbl。mysql> show databases;+--------------------+...原创 2019-10-05 15:08:21 · 686 阅读 · 0 评论 -
mysql 索引使用笔记
文章目录Mysql 索引普通索引创建索引修改表结构(添加索引)创建表的时候直接指定删除索引的语法唯一索引创建索引删除唯一索引创建表的时候直接指定显示索引信息使用alter创建/删除索引或主键索引索引的添加索引的删除主键添加主键删除主键Mysql 索引MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。打个比方,如果合理的设计且使用索引的MySQL是一...原创 2019-10-05 18:28:54 · 369 阅读 · 0 评论