![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mysql
文章平均质量分 87
智能编程设计工作室
这个作者很懒,什么都没留下…
展开
-
玩转Mysql系列 - 第27篇:mysql如何确保数据不丢失?
上面的过程设计比较好的地方,有2点日志先行,io顺序写,异步操作,做到了高效操作对数据页,先在内存中修改,然后使用io顺序写的方式持久化到redo log文件;然后异步去处理redo log,将数据页的修改持久化到磁盘中,效率非常高,整个过程,其实就是 MySQL 里经常说到的 WAL 技术,WAL 的全称是 Write-Ahead Logging,它的关键点就是先写日志,再写磁盘。两阶段提交确保redo log和binlog一致性。原创 2023-10-07 13:23:58 · 317 阅读 · 1 评论 -
玩转Mysql系列 - 第26篇:聊聊mysql如何实现分布式锁?
这是Mysql系列第26篇。本篇我们使用mysql实现一个分布式锁。原创 2023-09-28 10:54:49 · 595 阅读 · 0 评论 -
玩转Mysql系列 - 第25篇:sql中where条件在数据库中提取与应用浅析
在读完、理解了以上内容之后,详细大家对于数据库如何提取where中的查询条件,如何将where中的查询条件提取为Index Key,Index Filter,Table Filter有了深刻的认识。以后在撰写SQL语句时,可以对照表的定义,尝试自己提取对应的where条件,与最终的SQL执行计划对比,逐步强化自己的理解。同时,我们也可以回答文章开始提出的一个问题:MySQL 5.6中引入的Index Condition Pushdown,究竟是将什么Push Down到索引层面进行过滤呢?原创 2023-09-28 10:06:43 · 450 阅读 · 0 评论 -
玩转Mysql系列 - 第24篇:如何正确的使用索引?
11 |速度也很快,id上有主键索引,这个采用的上面介绍的范围查找可以快速定位目标数据。上面id的值跨度太大,1所在的页和200万所在页中间有很多页需要读取,所以比较慢。所以使用between and的时候,区间跨度不要太大。在区分度高的字段上面建立索引可以有效的使用索引,区分度太低,无法有效的利用索引,可能需要扫描所有数据页,此时和不使用索引差不多。原创 2023-09-27 14:54:52 · 446 阅读 · 0 评论 -
玩转Mysql系列 - 第21篇:什么是索引?
本文为索引第一篇:我们来了解一下什么是索引?路人在搞计算机之前,是负责小区建设规划的,上级领导安排路人负责一个万人小区建设规划,并提了一个要求:可以快速通过户主姓名找到户主的房子;让路人出个好的解决方案。原创 2023-09-12 17:55:45 · 318 阅读 · 0 评论 -
玩转Mysql系列 - 第23篇:mysql索引管理详解
一个表应该创建哪些索引?有索引时sql应该怎么写?我的sql为什么不走索引?需要知道内部原理where条件涉及多个字段多个索引时怎么走?多表连接查询、子查询,怎么去利用索引,内部过程是什么样的?like查询中前面有%的时候为何不走索引?字段中使用函数的时候为什么不走索引?字符串查询使用数字作为条件的时候为什么不走索引?索引区分度、索引覆盖、最左匹配、索引排序又是什么?原理是什么?关于上面各种索引选择的问题,我们会深入其原理,让大家知道为什么是这样?原创 2023-09-20 17:51:10 · 294 阅读 · 1 评论 -
玩转Mysql系列 - 第22篇:mysql索引原理详解
什么是索引?通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。b+树中叶子页之间用双向链表连接的,能够实现范围查找页内部的记录之间是采用单向链表连接的,方便访问下一条记录为了加快页内部记录的查询,对页内记录上加了个有序的稀疏索引,叫页目录(page directory)整体上来说mysql中的索引用到了b+树,链表,二分法查找,做到了快速定位目标数据,快速范围查找。原创 2023-09-19 11:31:58 · 212 阅读 · 0 评论 -
玩转Mysql系列 - 第20篇:异常捕获及处理详解
异常分为Mysql内部异常和外部异常内部异常由mysql内部触发,外部异常是sql的执行结果和期望结果不一致导致的错误sql内部异常捕获方式可以获取mysql中insert或者update影响的行数掌握使用乐观锁(添加版本号)来解决并发修改数据可能出错的问题begin end前面可以加标签,LEAVE 标签可以退出对应的begin end,可以使用这个来实现return的效果。原创 2023-09-11 17:03:11 · 1657 阅读 · 0 评论 -
玩转Mysql系列 - 第19篇:游标详解
游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次一行遍历数据的能力。游标只能在存储过程和函数中使用。游标用来对查询结果进行遍历处理游标的使用过程:声明游标、打开游标、遍历游标、关闭游标游标只能在存储过程和函数中使用一个begin end中只能声明一个游标掌握单个游标及嵌套游标的使用大家下去了多练习一下,熟练掌握游标的使用。原创 2023-09-11 17:02:25 · 725 阅读 · 0 评论 -
玩转Mysql系列 - 第18篇:流程控制语句(高手进阶)
本文主要介绍了mysql中控制流语句的使用,请大家下去了多练习,熟练掌握if函数常用在select中case语句有2种写法,主要用在select、begin end中,select中end后面可以省略case,begin end中使用不能省略caseif语句用在begin end中3种循环体的使用,while类似于java中的while循环,repeat类似于java中的do while循环,loop类似于java中的死循环,都用于begin end中循环中体中的控制依靠leave和。原创 2023-09-10 12:12:22 · 128 阅读 · 0 评论 -
玩转Mysql系列 - 第17篇:存储过程&自定义函数详解
线上程序有时候出现问题导致数据错误的时候,如果比较紧急,我们可以写一个存储来快速修复这块的数据,然后再去修复程序,这种方式我们用到过不少。存储过程相对于java程序对于java开发来说,可能并不是太好维护以及阅读,所以不建议在程序中去调用存储过程做一些业务操作。关于自定义函数这块,若mysql内部自带的一些函数无法满足我们的需求的时候,我们可以自己开发一些自定义函数来使用。所以建议大家掌握mysql中存储过程和自定义函数这块的内容。原创 2023-09-10 10:54:16 · 519 阅读 · 0 评论 -
玩转Mysql系列 - 第17篇:存储过程&自定义函数详解
线上程序有时候出现问题导致数据错误的时候,如果比较紧急,我们可以写一个存储来快速修复这块的数据,然后再去修复程序,这种方式我们用到过不少。存储过程相对于java程序对于java开发来说,可能并不是太好维护以及阅读,所以不建议在程序中去调用存储过程做一些业务操作。关于自定义函数这块,若mysql内部自带的一些函数无法满足我们的需求的时候,我们可以自己开发一些自定义函数来使用。所以建议大家掌握mysql中存储过程和自定义函数这块的内容。原创 2023-09-08 10:03:03 · 461 阅读 · 0 评论 -
玩转Mysql系列 - 第16篇:变量详解
变量由用户自定义的,而不是系统提供的。本文对系统变量和自定义变量的使用做了详细的说明,知识点比较细,可以多看几遍,加深理解系统变量可以设置系统的一些配置信息,数据库重启之后会被还原会话变量可以设置当前会话的一些配置信息,对当前会话起效declare创建的局部变量常用于存储过程和函数的创建中作用域:全局变量对整个系统有效、会话变量作用于当前会话、用户变量作用于当前会话、局部变量作用于begin end之间注意全局变量中用到了`@@`,用户变量变量用到了`@`,而局部变量没有这个符号。原创 2023-09-07 09:46:48 · 1057 阅读 · 0 评论 -
玩转Mysql系列 - 第15篇:详解视图
视图是在mysql5之后出现的,是一种虚拟表,行和列的数据来自于定义视图时使用的一些表中,视图的数据是在使用视图的时候动态生成的,视图只保存了sql的逻辑,不保存查询的结果。了解视图的用途及与表的区别。掌握视图的创建、使用、修改、删除。原创 2023-09-07 09:46:17 · 611 阅读 · 0 评论 -
玩转Mysql系列 - 第14篇:详解事务
数据库中的事务是指对数据库执行一批操作,这些操作最终要么全部执行成功,要么全部失败,不会存在部分成功的情况。举个例子1.从A账户扣1002.给B账户加100如果在事务的支持下,上面最终只有2种结果:操作成功:A账户减少100;B账户增加100操作失败:A、B两个账户都没有发生变化如果没有事务的支持,可能出现错:A账户减少了100,此时系统挂了,导致B账户没有加上100,而A账户凭空少了100。理解事务的4个特性:原子性、一致性、隔离性、持久性掌握事务操作常见命令的介绍。原创 2023-09-05 17:12:16 · 1074 阅读 · 1 评论 -
玩转Mysql系列 - 第13篇:细说NULL导致的神坑,让人防不胜防
NULL作为布尔值的时候,不为1也不为0任何值和NULL使用运算符(>、=、原创 2023-09-05 17:10:16 · 72 阅读 · 0 评论 -
玩转Mysql系列 - 第12篇:子查询(非常重要,高手必备)
本文中讲解了常见的子查询,请大家务必多练习注意in、any、some、any的用法字段为空的时候,in查询有大坑,这个要注意建议创建表的时候,列不允许为空。原创 2023-09-04 10:43:05 · 591 阅读 · 0 评论 -
玩转Mysql系列 - 第11篇:深入了解连接查询及原理
select 字段 from 表1, 表2 [where 关联条件];原创 2023-09-04 10:41:41 · 316 阅读 · 0 评论 -
玩转Mysql系列 - 第10篇:常用的几十个函数详解
这是Mysql系列第10篇。环境:mysql5.7.25,cmd命令中进行演示。原创 2023-08-28 09:22:50 · 102 阅读 · 0 评论 -
玩转Mysql系列 - 第9篇:分组查询详解(group by & having)
在写分组查询的时候,最好按照标准的规范来写,select后面出现的列必须在group by中或者必须使用聚合函数。select语法顺序:select、from、where、group by、having、order by、limit,顺序不能搞错了,否则报错。in多列查询的使用,下去可以试试。原创 2023-08-28 09:21:45 · 533 阅读 · 0 评论 -
玩转Mysql系列 - 第8篇:详解排序和分页(order by & limit),及存在的坑
limit用来限制select查询返回的行数,常用于分页等操作。select 列 from 表 limit [offset,] count;说明:offset:表示偏移量,通俗点讲就是跳过多少行,offset可以省略,默认为0,表示跳过0行;范围:[0,+∞)。count:跳过offset行之后开始取数据,取count行记录;范围:[0,+∞)。limit中offset和count的值不能用表达式。下面我们列一些常用的示例来加深理解。原创 2023-08-25 09:29:22 · 701 阅读 · 0 评论 -
玩转Mysql系列 - 第7篇:玩转select条件查询,避免采坑
like中的%可以匹配一个到多个任意的字符,_可以匹配任意一个字符空值查询需要使用IS NULL或者IS NOT NULL,其他查询运算符对NULL值无效建议创建表的时候,尽量设置表的字段不能为空,给字段设置一个默认值(安全等于)玩玩可以,建议少使用。原创 2023-08-25 09:28:17 · 593 阅读 · 0 评论 -
玩转Mysql系列 - 第6篇:select查询基础篇
建议别名前面跟上as关键字查询数据的时候,避免使用select *,建议需要什么字段写什么字段。原创 2023-08-24 09:26:27 · 329 阅读 · 0 评论 -
玩转Mysql系列 - 第5天:DML操作汇总,确定你都会?
原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。原创 2023-08-24 09:25:18 · 95 阅读 · 0 评论 -
Mysql系列 - 第4天:DDL常见操作汇总
这是Mysql系列第4篇。环境:mysql5.7.25,cmd命令中进行演示。DDL:Data Define Language数据定义语言,主要用来对数据库、表进行一些管理操作。如:建库、删库、建表、修改表、删除表、对列的增删改等等。文中涉及到的语法用[]包含的内容属于可选项,下面做详细说明。原创 2023-08-23 09:16:31 · 379 阅读 · 0 评论 -
Mysql系列 - 第3天:管理员必备技能(必须掌握)
通过命令的方式操作用户和权限不需要刷新,下次登录自动生效通过操作mysql库中表的方式修改、用户信息,需要调用刷新一下,下次登录自动生效mysql识别用户身份的方式是:用户名+主机本文中讲到的一些指令中带主机的,主机都可以省略,默认值为%,表示所有机器mysql中用户和权限的信息在库名为mysql的库中。原创 2023-08-23 09:15:41 · 75 阅读 · 0 评论 -
Mysql系列 - 第2天:详解mysql数据类型(重点)
就是5以下舍弃5以上进位,如果需要处理数字为5的时候,需要看5后面是否还有不为0的任何数字,如果有,则直接进位,如果没有,需要看5前面的数字,若是奇数则进位,若是偶数则将5舍掉。原创 2023-08-22 09:29:39 · 560 阅读 · 0 评论 -
Mysql系列 - 第1天:mysql基础知识
我们每天都在访问各种网站、APP,如微信、QQ、抖音、今日头条、腾讯新闻等,这些东西上面都存在大量的信息,这些信息都需要有地方存储,存储在哪呢?数据库。所以如果我们需要开发一个网站、app,数据库我们必须掌握的技术,常用的数据库有mysql、oracle、sqlserver、db2等。上面介绍的几个数据库,oracle性能排名第一,服务也是相当到位的,但是收费也是非常高的,金融公司对数据库稳定性要求比较高,一般会选择oracle。原创 2023-08-21 09:26:00 · 83 阅读 · 0 评论 -
MySQL 事务、锁和MVCC
以下文章来源于对线面试官,作者Java3y面试官:你是怎么理解InnoDB引擎中的事务的?候选者:在我的理解下,事务可以使「一组操作」要么全部成功,要么全部失败候选者:事务其目的是为了「保证数据最终的一致性」。候选者:举个例子,我给你发支付宝转了888块红包。那自然我的支付宝余额会扣减888块,你的支付宝余额会增加888块。候选者:而事务就是保证我的余额扣减跟你的余额增添是同时成功或者同时失败的,这样这次转账就正常了面试官:嗯,那你了解事务的几大特性吗?候选者:嗯,就是AC.原创 2022-05-26 09:12:30 · 233 阅读 · 0 评论 -
MySQL之Sql调优explain关键字详解
引言数据库性能优化是每个后端程序猿必备的基础技能之一,而Mysql中的explain堪称Mysql的性能优化分析神器,我们可以通过它来分析SQL语句的对应的执行计划在Mysql底层到底是如何执行的,它对于我们评估SQL的执行效率以及确定Mysql的性能优化方向具有重要的意义。但是很多同学对于如何根据explain对已有SQL进行深度的执行分析还是丈二和尚摸不着头脑,因此本文详细阐述通过explain分析定位数据库性能问题。explain基础对于每个SQL来说,当它被客户端发送到Mys原创 2022-04-24 09:10:06 · 4420 阅读 · 2 评论 -
慢sql优化
SQL 优化一般步骤| 通过慢查日志等定位那些执行效率较低的 SQL 语句| explain 分析SQL的执行计划需要重点关注 type、rows、filtered、extra。type 由上至下,效率越来越高: ALL 全表扫描 index 索引全扫描 range 索引范围扫描,常用语<,<=,>=,between,in 等操作 ref 使用非唯一索引扫描或唯一索引前缀扫描,返回单条记录,常出现在关联查询中 eq_re原创 2022-04-19 09:16:50 · 923 阅读 · 1 评论