![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 80
星夜孤帆
人之有吾,当应披荆棘,斩鬼熊,成就一番大事
展开
-
DBeaver安装与使用
一、安装链接:下载链接提取码:46x9二、连接数据库双击快捷方式打开三、DBeaver的使用3.1 sql的查询3.2 SQL的格式化3.3 查看表结构3.4 编辑数据3.5 保存文件dbeaver 使用教程、DBeaver数据库连接工具...原创 2021-10-19 21:23:43 · 1012 阅读 · 0 评论 -
MySQL事务实现原理
一、事务的执行流程当我们对数据库执行增删改操作时,不可能直接更新磁盘上的数据,如果实际上针对的是内存里面的BufferPool中的数据进行的。BufferPool中数据会异步的刷新到磁盘上(刷脏)。如上图所示,事务执行流程步骤(更新操作):1. 查询数据若BufferPool存在,则输出,不存在则读取磁盘中的数据并放入BufferPool;2. 更新操作,会先将数据的旧值写入undolog,以便回滚。(保证原子性);3. 更新BufferPool(内存)数据;...原创 2021-10-11 01:01:26 · 911 阅读 · 0 评论 -
Mysql之redo log与bin log详解
一、前言MySQL日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中,比较重要的还要属二进制日志binlog(归档日志)和事务日志redo log(重做日志)和undo log(回滚日志)。今天就来聊聊redolog(重做日志)、binlog(归档日志)、两阶段提交、undolog(回滚日志)。二、redo logredolog(重做日志)是InnoDB存储引擎独有的,它让MySQL拥有了崩溃恢复能力。比如MySQL实...原创 2021-10-11 00:18:02 · 2152 阅读 · 0 评论 -
MySQL之Buffer Pool 与 Change buffer
Mysql中的change Buffer原创 2021-09-01 09:33:09 · 345 阅读 · 0 评论 -
Mysql三大日志redo log、undolog、binlog
日志系统主要有redo log(重做日志)和binlog(归档日志)。redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。参考博客、参考博客、参考博客...原创 2021-08-15 19:36:40 · 303 阅读 · 0 评论 -
Mysql binlog日志三种模式
在认识binlog日志三种模式前,先了解一下解析binlog日志的命令工mysqlbinlog。mysqlbinlog工具的作用是解析mysql的二进制binlog日志内容,把二进制日志解析成可以在MySQL数据库里执行的SQL语句。binlog日志原始数据是以二进制形式存在的,需要使用mysqlbinlog工具转换成SQL语句形式。mysql的binlog日志作用是用来记录mysql内部增删改等对mysql数据库有更新内容的记录(对数据库进行改动的操作),对数据库查询的语句如show,s.原创 2021-08-15 19:11:11 · 3683 阅读 · 0 评论 -
MySQL之Buffer Pool
一、MySQL简介1.1 查看配置SQL1.2 MySQL页结构1.3 MySQL存储结构1.4 主键索引B+树主键索引树,是聚簇索引,叶子节点存放完整的数据。1.5 二级索引B+树MySQL非主键索引组织的B+树,为二级索引树,它的叶子节点为什么没有存储完整的数据记录呢?一方面,假如索引很多,每一个索引都维护一个完整的索引树,占用空间很多。另一方面,对于更新,每个索引树都需要去更新记录,耗费性能。所以,二级索引树叶子节点,存放索引值和主键值。原创 2021-05-17 09:28:10 · 380 阅读 · 2 评论 -
MySQL全面解析
一、Mysql架构图二、InnoDB数据页结构三、InnoDB行格式原创 2021-05-16 20:21:16 · 194 阅读 · 0 评论 -
MySQL锁原理
一、MySQL锁1.1 读锁与写锁1.1.1 读操作1.1.2 写操作这些操作默认都会加一把写锁,和select for updae是等价的。1.1.3 读写锁演示1. lock in share mode2. select for update视频教程原创 2021-05-16 16:55:47 · 367 阅读 · 1 评论 -
MySQL主从复制
一、复制的基本原理slave会从master读取binlog来进行数据同步1.1 三步骤+原理图MySQL复制过程分成三步:1 master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;2 slave将master的binary log events拷贝到它的中继日志(relay log) ;3 slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行化的二、复制的基本原则原创 2021-05-15 16:39:06 · 153 阅读 · 4 评论 -
MySQL锁机制
一、概述1.1 定义锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、V/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保让数据开友访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。1.2 生活购物打个比方,我们到淘宝上买一件商品,商品只有一件库存,这个时候如果还有另一个人买,那么如何解决是你买到还是另一个人买到的问题?原创 2021-05-15 13:20:47 · 211 阅读 · 0 评论 -
MySQL存储过程
一、建表# 新建库create database bigData;use bigData; #1 建表deptcreate table dept(id int auto_increment,deptno mediumint not null default 0,dname varchar(20) not null default "",loc varchar(13) not null default "",primary key(id)); #2 建表empcrea原创 2021-05-14 09:44:33 · 175 阅读 · 0 评论 -
MySQL查询优化
一、查询优化1.1 小表驱动大表永远小表驱动大表,类似嵌套循环Nested LoopEXISTSSELECT ... FROM table WHERE EXISTS (subquery)该语法可以理解为。将主查询的数据,放到子查询中做条件验证,根据验证结果(TRUE或FALSE)来决定主查询的数据结果是否得以保留。提示1.EXISTS(subquery)只返回TRUE 或FALSE,因此子查询中的SELECT*也可以是select 1或select'X',官方说法是实原创 2021-05-12 22:09:34 · 307 阅读 · 1 评论 -
MySQL索引优化
一、索引优化案例1.1 单表案例1.1.1 sqlcreate table if not exists `article`(`id` int(10) unsigned not null primary key auto_increment,`author_id` int(10) unsigned not null,`category_id` int(10) unsigned not null,`views` int(10) unsigned not null,`comments` i原创 2021-05-10 21:35:58 · 338 阅读 · 0 评论 -
MySQL性能分析之Explain
一、性能分析1.1 MySQL Query Optimizer1.Mysql中有专门负责优化select语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供他认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为是最优的,这部分最耗费时间)2.当客户端向MySQL请求一条Query,命令解析器模块完成请求分类,区别出是select并转发给MySQL Query Optimizer时,MySQL Query Optimizer首先会对整.原创 2021-05-09 21:09:25 · 303 阅读 · 1 评论 -
Mysql索引分类
一、单值索引概念:即一个索引只包含单个列,一个表可以有多个单列索引语法:1.随表一起创建create table customer (id int(10) unsigned auto_increment,customer_no varchar(200),customer_name varchar(200),primary key(id),key (customer_name));2.单独建单值索引create index idx_customer_name on cu原创 2021-05-09 20:01:18 · 131 阅读 · 0 评论 -
MySQL索引原理
一、索引的概念1.1 是什么MySQL 官方对索引的定义为:索引(Index)是帮助MySQL 高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。可以简单理解为排好序的快速查找数据结构。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。下图就是一种可能的索引方式示例:左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址。为了加快Col2 的查找,可以维护一原创 2021-05-08 19:06:46 · 235 阅读 · 2 评论 -
MySQL事务隔离级别和MVCC
参考原创 2021-05-07 10:46:47 · 193 阅读 · 0 评论 -
B树和B+树
一、页单位的作用操作系统是一页一页从磁盘读数据的,操作系统1页=4KB,操作系统从磁盘里面取数据,最少可以取出4KB。InnoDb的一页是等于16KB,这个值是可以改的,但是,尽量改为4的倍数。对于这八条数据,都是存在我们的磁盘里的,假如现在有一条sql语句select * from t1 where a = 7;一种思路,我们从磁盘里一个一个取出数据(每取一次涉及一次磁盘IO),取出来之后跟a=7比较,那么就需要7次磁盘IO,而磁盘IO相对于内存中运算是很耗时的,如果按照这种思路,原创 2021-04-24 16:06:49 · 175 阅读 · 0 评论 -
聚簇索引和非聚簇索引
参考原创 2021-04-24 12:33:49 · 4081 阅读 · 1 评论 -
MyCat
一、Mycat介绍1.1 是什么Mycat是什么?是数据库中间件,介于数据库与应用之间,进行数据处理与交互的中间件服务,可以简单的理解成数据库代理,我们的应用只需要与数据库中间件交互,而无需关注复杂的数据库部署。如上图所示,数据被分到多个分片数据库后,应用如果需要读取数据,就需要处理多个数据源的数据。如果没有数据库中间件,那么应用将直接面对分片集群,数据源切换、事务处理、数据聚合都需要在应用层直接处理,原本该是专注于业务的应用,将会花大量的工作来处理分片后的问题,最重要的是每个应用处理将是完原创 2021-03-02 22:32:46 · 260 阅读 · 0 评论 -
Mysql主从复制
一、复制的基本原理1.1 原理图slave会从master读取binlog来进行数据同步1.2 三步骤Mysql复制过程分成三步:1.master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;2.slave将master的binary log events拷贝到它的中继日志(relay log);3.slave重做中继日志中的事件,将改变应用到自己的数据库中。Mysql复制是异步的且串行化的1.3 复制原创 2021-03-02 21:04:46 · 215 阅读 · 0 评论 -
Mysql高级
一、Mysql的架构介绍1.1 Mysql简介1.1.1概述MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。Mysql是开源的,所以你不需要支付额外的费用。Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库...原创 2021-02-28 16:08:03 · 449 阅读 · 0 评论 -
一文入门mysql
一、基础知识1.1 新建myemployees数据库/* Navicat Premium Data Transfer Source Server : mysql0815 Source Server Type : MySQL Source Server Version : 50562 Source Host : localhost:3306 Source Schema : myemployees Target原创 2021-02-21 19:08:51 · 1043 阅读 · 0 评论 -
MySQL死锁例子
一、mysql死锁比如2个事务,事务A、事务B,都查询id=74和id=78的数据,并加锁事务A,select * from t where id=74for update,对id=74数据加锁然后,事务B,select * from t where id=78for update,对id=78数据加锁事务A,此时又需要查询id=78的数据,于是select * from t where id=78 for update,因为事务B已经加过id=2的锁了,所以事务A就会一直等待事务B..原创 2021-02-04 10:06:51 · 1208 阅读 · 0 评论 -
Mysql too many connections
-- 查看最大的连接数show variables like '%max_connections%';-- 查看当前连接数show processlist;原创 2020-09-25 10:01:39 · 118 阅读 · 0 评论 -
MySQL连接查询
首先,建立两张表学生信息表(学生ID、学生姓名、学生性别)和学生成绩表(学生ID、学生成绩、成绩等级)create table student_info( student_id int(10), student_name varchar(50), student_sex varchar(10));create table student_score( student_id int...原创 2020-05-03 15:40:50 · 606 阅读 · 0 评论 -
Navicat Premium使用教程
Navicat是一套数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。Navicat 是以直觉化的图形用户界面而建的,可以安全和简单地创建、组织、访问并共用信息。Navicat Premium 是 Navicat 的产品成员之一,能简单并快速地在各种数据库系统间传输数据,或传输一份指定 SQL 格式及编码的纯文本文件。其他功能包括导入向导、导出向导、查询创建工具、报表创建工具、资料同步...原创 2020-04-25 14:53:07 · 35512 阅读 · 2 评论 -
MySQL实战之运算符的使用
运算符的使用1. 案例目的创建数据表,并对表中的数据进行运算操作,掌握各种运算符的使用方法。创建表tmp15,其中包含varchar类型的字段note和int类型的字段price,使用运算符对表tmp15中不同的字段进行运算;使用逻辑操作符对数据进行逻辑操作;使用位操作符对数据进行位操作。创建表tmp15。create table tmp15 (note varchar(100),price ...原创 2018-07-15 11:25:00 · 933 阅读 · 0 评论 -
MySQL出现:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)问题解决
本文mysql的安装环境为win1064位,mysql版本为MySQL5.7问题描述:在命令行输入 mysql -u root -p 登录mysql,返回”Can't connect to MySQL server on localhost (10061)”错误意思大概就是:无法连接到“本地主机”(10061)上的MySQL服务器我自己也是在网上找了两三个小时才综合解决1、首先...原创 2019-03-20 14:13:41 · 1160 阅读 · 0 评论 -
MySQL常用操作汇总
MySQL之DDL常用命令create database study1;create database study2 character set gbk;show databases;show create database study2;alter database study2 character set utf8;show create database study2;dr...原创 2019-05-22 09:52:24 · 230 阅读 · 0 评论 -
MySQL学习笔记(6)-SQL基本操作
SQL基本操作基本操作CRUD将SQL的基本操作根据操作对象进行分类,分为三类:库操作,表操作(字段),数据操作库操作对数据库的增删改查。新增数据库基本语法Create database 数据库名字 [表选项];Create database 数据库名字 [库选项];库选项:用来约束数据库,分为两个选项 字符集设定:charset/character set 具体字符集(数据存储的编码格式)...原创 2018-06-05 00:38:18 · 253 阅读 · 0 评论 -
MySQL实战之数据表的基本操作
数据表的基本操作1.案例目的创建、修改、和删除表,掌握数据表的基本操作。2.案例操作过程1)登陆MySQL数据库。mysql -uroot -p2) 创建数据库company。create database company;use company;3) 创建offices。create table offices(officeCode int(10) not null unique,city...原创 2018-07-14 23:47:20 · 841 阅读 · 0 评论 -
MySQL实战之数据库的创建和删除
数据库的创建和删除1.案例目的登陆MySQL,使用数据库操作语句创建、查看和删除数据库,步骤如下:1)登陆数据库。2)创建数据库zoo。3)选择当前数据库为zoo,并查看zoo数据库的信息。4)删除数据库zoo。2.案例操作过程1)登陆数据库。打开命令行,输入登陆用户名和密码。mysql -uroot -p2)创建数据库zoo。create database zoo;show database...原创 2018-07-14 21:47:46 · 1078 阅读 · 0 评论 -
MySQL学习笔记(19)-数据备份与还原
数据备份与还原备份将当前已有的数据或者记录保留还原:将已经保留的数据恢复到对应的表中为什么要做备份还原?1.防止数据丢失:被盗,误操作2.保护数据记录数据备份还原的方式有很多种:数据表备份,单表数据备份,SQL备份,增量备份。数据表备份不需要通过SQL来备份:直接进入到数据库文件夹复制对应的表结构以及数据文件,以后还原的时候,直接将备份的内容放进去即可。数据表备份有前提条件:根据不同的存储引擎有不...原创 2018-06-10 23:57:25 · 218 阅读 · 0 评论 -
MySQL学习笔记(25)-存储过程
存储过程存储过程简称过程,procedure,是一种用来处理数据的方式。存储过程是一种没有返回值的函数。创建过程Create procedure 过程名字([参数列表])Begin -- 过程体End-- 创建存储过程create procedure pro1() -- 假设过程中需要显示数据:使用selectselect * from my_student;查看过程函数的查看方式完全...原创 2018-06-12 23:08:36 · 187 阅读 · 0 评论 -
MySQL学习笔记(8)-校对集问题
校对集:数据比较的方式校对集有三种格式 _bin:binary,二进制比较,取出二进制位,一位一位的比较,区分大小写 _cs: case sensitive,大小写敏感,区分大小写 _ci: case insensitice,大小写不敏感,不区分大小写查看数据库所支持的校对集:show collation;校对集应用:只有当数据产生比较的时候,校对集才会生效。对比:使用utf8的...原创 2018-06-06 00:30:40 · 208 阅读 · 0 评论 -
MySQL学习笔记(24)-函数
函数函数:将一段代码块封装到一个结构中,在需要执行代码块的时候,调用结构执行即可(代码复用)函数分为两类:系统函数和自定义函数系统函数系统定义好的函数,直接调用即可。任何函数都有返回值,因此函数的调用是通过select调用。Mysql中,字符串的基本操作单位(最常见的是字符)Substring:字符串截取(字符为单位) -- 定义两个变量set @cn = '世界你好';set @en = '...原创 2018-06-12 18:49:59 · 200 阅读 · 0 评论 -
MySQL学习笔记(23)-代码执行结构
代码执行结构代码执行结构有三种:顺序结构,分支结构和循环结构分支结构分支结构:实现准备多个代码块,按照条件选择性执行某段代码。在mysql中只有if分支基本语法If 条件判断 then -- 满足条件要执行的代码;Else -- 不满足条件要执行的代码;End if;-- 修改语句结束符delimiter %%create trigger before_order before i...原创 2018-06-12 15:43:59 · 221 阅读 · 0 评论 -
MySQL学习笔记(22)-触发器
触发器触发器:trigger,事先为某张表绑定好一段代码,当表中的某些内容发生改变的时候(增删改)系统会自动触发代码,执行。触发器:事件类型,触发时间,触发对象 事件类型:增删改,三种类型 insert,delete和update 触发时间:before和after 触发对象:表中的每一条记录(行)一张表中只能拥有一种触发时间的一种类型的触发器:最多一张表能有6个触发器创建触发器...原创 2018-06-12 15:18:19 · 293 阅读 · 0 评论