Mysql
文章平均质量分 52
ywl470812087
个人简介:深耕物联网行业,ERP,CSDN博客专家。 任职华为网联网智慧照明、空调资深工程师,并且上线投产使用,研发企业亿量级吞吐中间件。 擅长 Java语言、C语言等。
展开
-
mysql语句执行顺序
常用的 Aggregate 函数包涵以下几种:(AVG:返回平均值)、(COUNT:返回行数)、(FIRST:返回第一个记录的值)、(LAST:返回最后一个记录的值)、(MAX: 返回最大值)、(MIN:返回最小值)、(SUM: 返回总和)。:UNION连接的两个SELECT查询语句,会重复执行步骤1~9,产生两个虚拟表9,UNION会将这些记录合并到虚拟表10中。将重复的行从虚拟表10中移除,产生虚拟表 11。:根据GROUP BY子句中的列,对虚拟表4中的记录进行分组操作,产生虚拟表5。原创 2023-01-16 19:49:52 · 2675 阅读 · 0 评论 -
Mysql集群同步时为什么使用binlog
直接复制数据过程中一旦中断复制(比如断网),很艰确定复制的offset。binlog是mysq提供的日志,所有存储引擎都可用.Mysql集群同步时为什么使用binlog?原创 2023-01-02 14:53:42 · 236 阅读 · 1 评论 -
MysQL的binlog有几种录入格式
binlog.format=STATEMENT(默认)∶数据操作的时间,同步时不一致,每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。binlcg.format=ROW:批量数据操作时,效率低、不记录每条sql语们的上下文信息,仅需记录哪条数据被修改了,修改成什么样了.而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。原创 2023-01-02 14:47:53 · 151 阅读 · 0 评论 -
mysql日志刷盘
1、sync binlog=0的时候,表示每次提交事务binlog不会马上写入到磁盘,而是先写到page cache,相对于磁盘写入来说写page cache要快得多不过在Mysql崩滚的时候会有丢失日志的风险.3、sync binlog的值大于1的时候,表示每次提交事务都先写到page cache,只有等到积累了N个事务之后才tsync写入到磁盘,同样在此没置下Mysq1崩溃的时候会有丢失N个事务日志的风险。2、sync_binlog=1的时候,表示每次提交事务都会执行fsync写入到磁盘;原创 2023-01-02 14:36:48 · 985 阅读 · 0 评论 -
Mysql会产生几种日志
redo log是一种基于磁盘的数据结构,用来在MySQL宕机情况下将不完整的事务执行数据纠正,redo 日志记录事务执行后的状态.当事务开始后,redo log就开始产生,并且题着事务的执行不断写入redo log file中,redo log file中记录了xxx页做了xx修改的信息,我们都知道数据库的更新操作会在内存中先执行,最后刷入磁盘.通过MySQL的命令·重写日志(redo log),回滚日志(undo log),二进制日志(bin log)慢查询日志(slow query log)原创 2023-01-02 12:59:09 · 253 阅读 · 0 评论 -
mysql事务一致性,原子性,持久性实现以及锁区别
当事务提交时,必须先将事务的所有日志写入日志文件进行持久化,就是我们常说的WAL(writeahead log机制,如果出现新电重启便可以从redolog中恢复,如果redolog写入失败赂么也就意味着修改失败整个事务也就直接回滚了.表级锁:串行化(serializable)时,整表加锁,事务访问表数据时需要申请锁,虽然可分为读锁和写锁,但毕竟是锁住整张表,会导致并发能力下降,一般是做 ddl 处理时使用。首先是通过锁和mvcc实现了执行过程中的一致性和原子性。Mysql事务一致性,原子性是如何实现的?原创 2023-01-02 12:15:43 · 429 阅读 · 0 评论 -
mysql事务隔离是如何实现的
锁定读,使用到了读写锁读写锁是最简单直接的的事务隔离建现方式1,每次读操作都要获取一个共享(读)锁,每次写操作需要获取一个写锁。2,共享锁之间不会产生互斥,共享锁和写谈之间.以及写锁与写锁之间会产生互斥.3,当产生锁竞争时,需要等待其中一个操作释放锁后,另一个操作才能获取到锁锁机制,解决的就是多个事务同时更新数据,此时必须要有一个加锁的机制行锁(记录锁)∶解决的就是多个事务同时更新一行数据问隙锁:解决的就是多个事务同时更新多行数据下列操作属于锁定读insert.update.原创 2023-01-01 12:43:57 · 976 阅读 · 0 评论 -
mysql如何处理事务并发问题的
通过事务的隔离级别来解决并发事务问题原创 2023-01-01 11:54:24 · 66 阅读 · 0 评论 -
mysql事务
是数拭库操作的最小工作单元,是作为单个迈辑工作单元执行的一系列阳操f作;这些操作作为一个整体一起向系统现交,要么都执行、要么都不执行;事务是一组不可再分言的操作集合(工作逻辑单元)1、原子性atomicity(过程保证,保证多个操作都被执行)只做一个步骤事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做2、一致性consistency(结果保证,保证多个操作都执行成功)保证要屹完刚张嘴挂了,失去一致性事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。原创 2023-01-01 11:24:11 · 632 阅读 · 0 评论 -
mysql索引机制实现及自适应hash索引
哈希(hash)是一种非常快的查找方法,一般情况下查找的时间复杂度为O(1)。常用于连接(join)操作,如Oracle中的哈希连接(hash join)。InnoDB存储引擎会监控对表上索引的查找,如果观察到建立哈希索引可以带来速度的提升,则建立哈希索引,所以称之为自适应(adaptive)的。自适应哈希索引通过缓冲池的B+树构造而来,因此建立的速度很快。而且不需要将整个表都建哈希索引,InnoDB存储引擎会自动根据访问的频率和模式来为某些页建立哈希索引。原创 2022-12-31 21:01:25 · 1194 阅读 · 0 评论 -
mysql支持的存储引擎
默认支持innodb,其他存储引擎都不支持事务。原创 2022-12-31 20:43:53 · 66 阅读 · 0 评论 -
mysql查询语句执行顺序
其实执行过group by后就没必要再去执行distinct,因为分组后,每组只会有一条数据,并且每条数据都不相同。第十一步:对vt9进行排序,此处返回的不是一个虚拟表,而是一个游标,记录了数据的排序顺序,此处可以使用别名;第四步:如果from子句中的表数量大于2,则重复第一步到第三步,直至所有的表都加载完毕,更新vt3;第三步:如果使用的是外连接,执行on的时候,会将主表中不符合on条件的数据也加载进来,做为外部行。第二步:筛选关联表符合on表达式的数据,保留主表,生成虚拟表vt2;原创 2022-12-31 18:35:19 · 1111 阅读 · 0 评论 -
MySQL内部的核心组件
到了这一步,捋顺一下整个过程:MySQL的工作线程监听连接池中的SQL请求,将SQL转发给SQL接口,SQL解析器解析SQL接口中的SQL,转交给SQL优化器,选择最优执行路径,此时要做的就是执行这条SQL了,那么实际上执行器组件就会调用MySQL内部的存储引擎例如InnoDB存储引擎去执行这条SQL,执行器会根据优化器生成一套执行计划,不停的调用存储引擎的各种接口去完成sql语句的执行计划,这里又讲到了存储引擎的各种接口,下面第8点简单描述下;5. MySQL内部的SQL解析器主要又是做什么的?原创 2022-12-31 17:46:14 · 843 阅读 · 1 评论 -
mysql8.0为啥移除查询缓存
5,执行sql时候有触发器,自定义函数,缓存也是不起作用的。1,对于经常更新的表缓存容易过期不容易控制。4,mysql缓存在分库分表的情况下是不起作用的。6,在表结构发生改变的时候,缓存会失效。2,sql要完全一样才能命中缓存。原创 2022-12-30 20:11:05 · 227 阅读 · 0 评论 -
MySQL 调优 | OPTIMIZER_TRACE详解
OPTIMIZER_TRACE是MySQL 5.6引入的一项跟踪功能,它可以跟踪优化器做出的各种决策(比如访问表的方法、各种开销计算、各种转换等),并将跟踪结果记录到 INFORMATION_SCHEMA.OPTIMIZER_TRACE 表中。optimizer_trace总开关,默认值:enabled=off,one_line=offenabled:是否开启optimizer_trace;on表示开启,off表示关闭。one_line:是否开启单行存储。on表示开启;原创 2022-12-30 19:40:26 · 716 阅读 · 0 评论 -
索引排序内部流程
select 查询字段是不是索引覆盖,覆盖到了就直接内存中排序,输出结果,如果索引没有覆盖查询字段,计算select的字段释放超过单行所有字段总和限制,超过限制就进行双路排序,否则就使用单路排序索引排序和文件排序介绍:当对sql进行order by排序的时候,需要尽可能的使用索引排序,如果无法使用索引排序的话,mysql就会使用文件排序。举个例子,下面有一段sql:select * from user where name = "自由的辣条" order by age。原创 2022-12-29 11:57:18 · 514 阅读 · 2 评论 -
一个b+树库存放多少索引记录
(计算机在存储数据的时候,最小存储单元是扇区,一个扇区的大小是 512 字节,而文件系统(例如 XFS/EXT4)最小单元是块,一个块的大小是 4KB。InnoDB 引擎存储数据的时候,是以页为单位的,每个数据页的大小默认是 16KB,即四个块。非叶子结点由主键值和一个指向下一层的地址的指针组成的组合组成。叶子结点中由一组键值对和一个指向该层下一页的指针组成,键值对存储的主键值和数据。假设一条数据的大小是1KB,那么一个叶子结点可以存储16条数据。由存储结构,可以大概计算出一个B+树能存储的数据数量。原创 2022-12-28 13:04:00 · 315 阅读 · 0 评论 -
mysql聚簇索引和非聚簇索引的区别
mysql聚簇索引和非聚簇索引的区别原创 2022-12-27 18:27:49 · 68 阅读 · 0 评论 -
mysql回表查询和索引覆盖
具体做法就是将要查询的数据作为索引建立普哦,那个索引(可以是单列索引,也可以一个索引语句定义所有要查询的列,即联合索引),这样就可以直接返回索引中的数据,不需要再通过聚集索引去定位行记录,避免了回标的情况发生。因为索引中已经包含了要查询的字段的值,因此查询的时候直接返回索引中的字段值就可以了,不需要再到表中查询,避免了对主键索引的二次查询,也就提高了查询的效率。因为覆盖索引必须要存储索引的列值,而哈希索引、空间索引和全文索引等都不存储索引列值,索引MySQL只能使用B+Tree索引做覆盖索引。原创 2022-11-28 13:52:45 · 995 阅读 · 3 评论 -
MySQL常用引擎有MyISAM和InnoDB区别
MySQL常用引擎有MyISAM和InnoDB,而InnoDB是mysql默认的引擎。MyISAM不支持行锁,而InnoDB支持行锁和表锁。如何加锁?MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁,这个过程并不需要用户干预,因此用户一般不需要直接用LOCK TABLE命令给MyISAM表显式加锁。显式加锁上共享锁(读锁)的写法:lock in share mode,例如:.原创 2022-04-24 13:33:58 · 161 阅读 · 0 评论 -
MySQL行锁和表锁的含义及区别
MySQL行锁和表锁的含义及区别原创 2022-04-08 18:18:59 · 402 阅读 · 0 评论 -
mysql常见函数
#进阶4:常见函数/*概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名好处:1、隐藏了实现细节 2、提高代码的重用性调用:select 函数名(实参列表) 【from 表】;特点: ①叫什么(函数名) ②干什么(函数功能)分类: 1、单行函数 如 concat、length、ifnull等 2、分组函数 功能:做统计使用,又称为统计函数、聚合函数、组函数 常见函数: 一、单行函数 ...原创 2020-05-10 22:02:40 · 111701 阅读 · 0 评论 -
MySQL事务介绍
##数据库事务###含义 通过一组逻辑操作单元(一组DML——sql语句),将数据从一种状态切换到另外一种状态###特点 (ACID) 原子性:要么都执行,要么都回滚 一致性:保证数据的状态操作前和操作后保持一致 隔离性:多个事务同时操作相同数据库的同一个数据时,一个事务的执行不受另外一个事务的干扰 持久性:一个事务一旦提交,则数据将持久化到本...原创 2020-05-04 21:46:12 · 116482 阅读 · 0 评论 -
MySQL DDL语言笔记
##DDL语句###库和表的管理库的管理: 一、创建库 create database 库名 二、删除库 drop database 库名表的管理: #1.创建表 CREATE TABLE IF NOT EXISTS stuinfo( stuId INT, stuName VARCHAR(20),...原创 2020-05-04 21:43:58 · 121429 阅读 · 0 评论 -
MySQL DML语言笔记
##DML语言###插入语法: insert into 表名(字段名,...) values(值1,...);特点: 1、字段类型和值类型一致或兼容,而且一一对应 2、可以为空的字段,可以不用插入值,或用null填充 3、不可以为空的字段,必须插入值 4、字段个数和值的个数必须一致 5、字段可以省略,但默认所有字段,并且顺序和表...原创 2020-05-04 21:41:31 · 104250 阅读 · 0 评论 -
MySQL DQL语言的笔记
##DQL语言的学习###进阶1:基础查询 语法: SELECT 要查询的东西 【FROM 表名】; 类似于Java中 :System.out.println(要打印的东西); 特点: ①通过select查询完的结果 ,是一个虚拟的表格,不是真实存在 ② 要查询的东西 可以是常量值、可以是表达式、可以是字段、可以是函数###进阶2:条...原创 2020-05-04 21:39:30 · 116926 阅读 · 0 评论 -
MySQL的常见命令
###MySQL的常见命令 1.查看当前所有的数据库 show databases; 2.打开指定的库 use 库名 3.查看当前库的所有表 show tables; 4.查看其它库的所有表 show tables from 库名; 5.创建表 create table 表名( 列名 列类型,...原创 2020-05-04 21:35:14 · 128489 阅读 · 0 评论 -
MySQL介绍
一、MySQL的背景前身属于瑞典的一家公司,MysSQL AB08年被sun公司收购09年sun被oracle收购二、IMySQL的优点1、开源、免费、成本低2、性能高、移植性也好3、体积小,便于安装三、MySQL的安装属于c/s架构的软件,- -般来讲安装服务端企业版社区版5.55.65.78.0四、MySQL服务的启动和停止方式- -:通过命令行net s...原创 2020-05-04 21:30:01 · 138329 阅读 · 0 评论 -
数据库的介绍
一、数据库的好处1、可以持久化数据到本地2、结构化查询二、数据库的常见概念★1、DB:数据库,存储数据的容器2、DBMS:数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB3、SQL: 结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言三、数据库存储数据的特点1、数据存放到表中,然后表再放到库中2、一个...原创 2020-05-04 21:18:27 · 116615 阅读 · 0 评论 -
数据库优化 - MYSQL优化
判断问题SQL判断SQL是否有问题时可以通过两个表象进行判断:系统级别表象CPU消耗严重IO等待严重页面响应时间过长应用的日志出现超时等错误可以使用sar命令,top命令查看当前系统状态。也可以通过Prometheus、Grafana等监控工具观察系统状态。(感兴趣的可以翻看我之前的文章)SQL语句表象冗长执行时间过长从全表扫描获取数据执行计划中的rows、co...转载 2020-05-05 17:12:45 · 115417 阅读 · 0 评论 -
解决数据库高并发访问瓶颈问题
一、缓存式的Web应用程序架构: 在Web层和db层之间加一层cache层,主要目的:减少数据库读取负担,提高数据读取速度。cache存取的媒介是内存,可以考虑采用分布式的cache层,这样更容易破除内存容量的限制,同时增加了灵活性。二、业务拆分: 电商平台,包含了用户、商品、评价、订单等几大模块,最简单的做法就是在一个数据库中分别创建users、shops、comment、...转载 2019-12-04 11:30:16 · 118450 阅读 · 0 评论 -
WIN10下怎么找到MYSQL5.7数据库中存储数据的位置以及重装mysql数据复盘
由于我换了个m.2的固态硬盘我重装系统,但是重装系统之后,我mysql之前的版本是5.5的,然后不能启动,我想这重装吧,我想在重装肯定装5.7的了,我就从官网下载了5.7版本,安装完毕,但是我想把我的之前的数据库以及表数据都复盘到mysql5.7下面。我怎么就没有找到mysql5.7版本的数据存储路径。经过百度一番折腾方法一:网上说的一般方式是这样的:在你的MYSQL的创建目录...原创 2019-11-24 22:21:40 · 106170 阅读 · 0 评论 -
Mysql 给你100万条数据的一张表,你将如何分页查询优化?
1.两种查询引擎查询速度(myIsam 引擎)InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行。MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作有些不同,InnoDB类型的表用count(*)或者count(主键),加上w...原创 2019-04-04 19:51:27 · 130161 阅读 · 2 评论 -
mysql存储过程语法及实例
存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。--------------------基本语法--------------------一.创建存储过程create procedure sp_name()begin.........end二.调用存储过程1.基本语法:call sp_name()注意:存储过程名称后面必须加括号,哪怕...转载 2019-04-07 19:56:50 · 124762 阅读 · 0 评论 -
计算一列中某个值的个数
忆之独秀 https://blog.csdn.net/lavorange/article/details/25004181这两天在参加阿里大数据竞赛,进入第二赛季要用到不少的SQL语句,现在才发现当时的数据库是白学了,今天就根据具体的需求来整理一下。可以把需求整理成为一道简单的题目,题目如下:给定一个表t_alibaba_data:user_id brand_id t...转载 2019-04-15 22:14:54 · 134487 阅读 · 0 评论 -
Mysql 行转列,列转行
下面来了一个统计数据的需求,要求按日期、支付方式来统计充值金额信息。这也是一个典型的行转列的例子。我们可以通过下面的脚本来达到目的。如果我想知道每位学生的每科成绩,而且每个学生的全部成绩排成一行,这样方便我查看、统计,导出数据。其实行转列,关键是要理清逻辑,而且对分组(Group by)概念比较清晰。查询结果如图所示,这样我们就能很清楚的了解每位学生所有的成绩了。原创 2019-04-15 23:00:56 · 122747 阅读 · 1 评论 -
DQL -- 数据查询语言(查询不会修改数据库表记录)
原文出处:https://blog.csdn.net/jianghao233/article/details/81180944一、 基本查询1. 字段(列)控制1) 查询所有列SELECT * FROM 表名;SELECT * FROM emp;--> 其中“*”表示查询所有列2) 查询指定列SELECT 列1 [, 列2, ... 列N] FROM 表名;...原创 2019-03-20 15:32:00 · 121022 阅读 · 0 评论 -
DQL、DML、DDL、DCL的概念与区别
SQL(Structure Query Language)语言是数据库的核心语言。SQL的发展是从1974年开始的,其发展过程如下:1974年-----由Boyce和Chamberlin提出,当时称SEQUEL。1976年-----IBM公司的Sanjase研究所在研制RDBMS SYSTEM R时改为SQL。1979年-----ORACLE公司发表第一个基于SQL的商业化RDBMS...原创 2019-03-20 15:09:07 · 113534 阅读 · 0 评论 -
[小结]InnoDB体系结构及工作原理
一、概述: innodb的整个体系架构就是由多个内存块组成的缓冲池及多个后台线程构成。缓冲池缓存磁盘数据(解决cpu速度和磁盘速度的严重不匹配问题),后台进程保证缓存池和磁盘数据的一致性(读取、刷新),并保证数据异常宕机时能恢复到正常状态。 缓冲池主要分为三个部分:redolog buffer、innodb_buffer_pool、innodb_additional_mem_pool...转载 2019-03-03 12:49:44 · 110554 阅读 · 0 评论 -
sql语句优化之一:尽量使用索引避免全表扫描
url:http://lzz7658823.iteye.com/?page=31.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置...原创 2019-02-21 23:17:20 · 127296 阅读 · 1 评论