mysql
基本知识,日常使用积累,索引,数据库优化
徐同学呀
致力于java底层、源码、中间件、后端领域学习和探索。热爱源码,热爱生活,持续改进,坦诚合作!
展开
-
Centos8下安装mysql8(基础配置,远程连接)
yum install mysqlyum install mysql-serveryum install mysql-devel查看mysql版本 -V 是大写。操作mysql进程命令,启动、停止、重启是对进程`mysqld`操作。设置远程连接,root用户修改为所有ip或者指定远程ip可访问即可通过root远程连接。-设置新创建的用户远程连接,需要设置host为所有ip或者指定远程ip可访问,同时因为新建用户没有权限(基本的创建数据库的权限都没有),需要将权限设置给新用户。原创 2020-10-13 23:51:23 · 988 阅读 · 0 评论 -
MySQL——InnoDB行锁
InnoDB行锁先从两阶段锁协议说起InnoDB的行锁模式及加锁方法InnoDB行锁实现方式Next-Key锁相关知识点什么时候使用表锁死锁和死锁检测总结可以通过检查InnoDB_row_lock状态变量来分析系统上的行锁的争夺情况: mysql> show status like 'innodb_row_lock%';先从两阶段锁协议说起在 InnoDB 事务中,行锁是在...原创 2019-03-10 14:29:10 · 502 阅读 · 0 评论 -
MySQL——MyISAM 表锁
MyISAM 表锁锁的概念:MySQL的表级锁有两种模式:给表显示加锁:MyISAM表不会出现死锁(Deadlock Free)的原因MyISAM的锁调度另一类表级锁MDL锁(metadata lock)总结:锁的概念:锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问...原创 2019-03-10 14:02:28 · 504 阅读 · 0 评论 -
MySQL——全局锁
全局锁顾名思义,全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。全局锁的典型使用场景是,做全库逻辑备份。全局锁主...原创 2019-03-10 13:46:51 · 984 阅读 · 0 评论 -
case when then else end
case when then else end 可以像java中的if一样条件显示第一种方式:case column when value1 then result when value2 then result else result end第二种方式:case when condition1 then res...原创 2019-03-09 22:12:47 · 710 阅读 · 0 评论 -
三范式
第一范式如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。简单的说,就是每一个列(属性),不能再分割成多个列(属性)。第一范式(First Normal Form,1st NF)就是指在同一表中没有重复项出现,如果有则应将重复项去掉。这个去掉重复项的过程称为规范化处理。按规范化建立的指标体系和表的过程,都自动保证所有表都满足1st NF。第二范式第二范式(Second No...原创 2019-03-09 22:02:20 · 393 阅读 · 0 评论 -
数据库事务的四大特性和事务的四大隔离级别
数据库事务的四大特性ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性)原子性:事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性:执行事务前后,数据库从一个一致性状态转换到另一个一致性状态。隔离性:并发访问数据库时,一个用户的事物不被其他事务所干扰,各并发事务之间数据...原创 2019-03-09 21:53:22 · 311 阅读 · 0 评论 -
更新丢失、脏读、不可重复读、幻读的问题
多个事务同时执行的时候,可能出现脏读、不可重复读、幻读的问题。脏读:就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。不可重复读:是指在数据库访问中,一个事务范围内两个相同的查询却返回了不同数...原创 2019-03-09 21:32:31 · 587 阅读 · 0 评论 -
MySQL——深入浅出索引(二)
MySQL——深入浅出索引(二)1、覆盖索引2、最左前缀原则3、索引下推在开始这篇文章之前,我们先来看一下这个问题:在下面这个表 T 中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?mysql> create table T (ID int primary key,k int NOT NULL ...原创 2019-03-02 13:27:38 · 436 阅读 · 0 评论 -
MySQL——深入浅出索引(一)
MySQL——深入浅出索引(一)1、索引的常见模型哈希表有序数组二叉搜索树2、InnoDB 的索引模型B+ 树索引索引维护总结:提到数据库索引,我想你并不陌生,在日常工作中会经常接触到。比如某一个 SQL 查询比较慢,分析完原因之后,你可能就会说“给某个字段加个索引吧”之类的解决方案。但到底什么是索引,索引又是如何工作的呢?一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录...原创 2019-03-02 13:03:42 · 599 阅读 · 0 评论 -
一条SQL更新语句的执行过程
一条SQL更新语句的执行过程1、redo log(重做日志)举一个小栗子:2、binlog3、两阶段提交4、两个参数mysql> update T set c=c+1 where ID=2;执行语句前要先连接数据库,这是连接器的工作。接下来,分析器会通过词法和语法解析知道这是一条更新语句。优化器决定要使用 ID 这个索引。然后,执行器负责具体执行,找到这一行,然后更新。与查询流程不...原创 2019-03-02 12:33:43 · 4228 阅读 · 4 评论 -
一条查询SQL语句的执行过程
这里写自定义目录标题1、连接器MySQL默认8小时断开连接问题:长连接积累,导致内存占用太大问题:2、查询缓存3、分析器4、优化器5、执行器mysql> select * from T where ID=10;大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以...原创 2019-03-02 12:13:22 · 848 阅读 · 0 评论