![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mysql
文章平均质量分 95
咔咔-
死磕MySql系列作者
展开
-
学长告诉我,大厂MySQL都是通过SSH连接的
本文给大家介绍两种应对开发者离职后,数据库权限收回的方案。一种是通过MySQL本身字段的权限、另一种是通过SSH来连接,目前咔咔所在的公司是通过SSH进行连接的。在介绍这两种方案时发现了很多可以扩展的知识点,也一并写了出来,当你看这篇文章时就不用再一次进行查资料了。坚持学习、坚持写作、坚持分享是咔咔从业以来所秉持的信念。愿文章在偌大的互联网上能给你带来一点帮助,我是咔咔,下期见。...原创 2022-08-09 08:30:00 · 2959 阅读 · 8 评论 -
为什么不建议给MySQL设置Null值?《死磕MySQL系列 十八》
大家好,我是咔咔 不期速成,日拱一卒之前ElasticSearch系列文章中提到了如何处理空值,若为Null则会直接报错,因为在ElasticSearch中当字段值为null时、空数组、null值数组时,会将其视为该字段没有值,最终还是需要使用exists或者null_value来处理空值大多数ElasticSearch的数据都来自于各类数据库,这里暂且只针对于MySQL,各个开源软件中都默认兼容各种Null值,空数组等等若从根源上截断就可以省很多事,直到现在很多开发小伙伴还是坚韧不拔的给字段的默认值原创 2022-05-06 08:30:00 · 4060 阅读 · 10 评论 -
MySQL对JOIN做了那些不为人知的优化《死磕MySQL系列 十七》
大家好,我是咔咔 不期速成,日拱一卒在平时开发工作中join的使用频率是非常高的,很多SQL优化博文也让把子查询改为join从而提升性能,但部分公司的DBA又不让用,那么使用join到底有什么问题呢?最新文章死磕MySQL系列总目录为什么MySQL字符串不加引号索引失效?《死磕MySQL系列 十一》打开order by的大门,一探究竟《死磕MySQL系列 十二》重重封锁,让你一条数据都拿不到《死磕MySQL系列 十三》闯祸了,生成环境执行了DDL操作《死磕MySQL系列 十四》...原创 2022-04-26 08:30:00 · 1233 阅读 · 2 评论 -
闯祸了,生产环境执行了DDL操作《死磕MySQL系列 十四》
由于业务随着时间不停的改变,起初的表结构设计已经满足不了如今的需求,这时你是不是想那就加字段呗!加字段也是个艺术活,接下来由本文的主人咔咔给你吹。试想一下这个场景事务A在执行一个非常大的查询事务B毫不犹豫的执行了DDL操作接下来会发生什么,你如果已经知道答案的话恭喜你又掌握了一个MySQL中重要的知识点。事务A执行查询时会持有MDL锁,而事务B同样也需要MDL锁,但事务A在进行大查询,所以导致事务B后的所有操作都会被堵塞。这时你应该知道了在MySQL中所有对表的增删改查都需要申请MDL读锁。接原创 2022-01-11 17:30:57 · 1066 阅读 · 0 评论 -
重重封锁,让你一条数据都拿不到《死磕MySQL系列 十三》
在开发中有遇到很简单的SQL却执行的非常慢,甚至有的都是只查询一行数据。咔咔遇到的只有两种情况,一种是MySQL服务器CPU占用率很高,所有的SQL都执行的很慢直到超时,程序也直接502,另一种情况是行锁造成的锁等待。接下来咔咔带领大家看看各种为难SQL执行的场景。最新文章死磕MySQL系列总目录字符串可以这样加索引,你知吗?《死磕MySQL系列 七》无法复现的“慢”SQL《死磕MySQL系列 八》什么?还在用delete删除数据《死磕MySQL系列 九》MySQL统计总数就用count(*原创 2021-12-27 10:18:40 · 1289 阅读 · 0 评论 -
打开order by的大门,一探究竟《死磕MySQL系列 十二》
没事看一下,order by 语句的几种算法系列文章系列文章一、原来一条select语句在MySQL是这样执行的《死磕MySQL系列 一》二、一生挚友redo log、binlog《死磕MySQL系列 二》原创 2021-11-27 15:44:51 · 1871 阅读 · 3 评论 -
为什么MySQL字符串不加引号索引失效?《死磕MySQL系列 十一》
文章目录系列文章一、索引失效的十大原因系列文章一、原来一条select语句在MySQL是这样执行的《死磕MySQL系列 一》二、一生挚友redo log、binlog《死磕MySQL系列 二》一、索引失效的十大原因原创 2021-11-17 17:24:58 · 2981 阅读 · 5 评论 -
MySQL统计总数就用count,别花里胡哨的《死磕MySQL系列 十》
统计总数就用count(*),别花里胡哨的系列文章一、不同存储引擎的做法系列文章一、原来一条select语句在MySQL是这样执行的《死磕MySQL系列 一》二、一生挚友redo log、binlog《死磕MySQL系列 二》有一个问题是这样的统计数据总数用count(*)、count(主键ID)、count(字段)、count(1)那个效率高。先说结论,不用那么花里胡哨遇到统计总数全部使用count(*).但是有很多小伙伴就会问为什么呢?本期文章就解决大家的为什么。一、不同存储引擎的做法你原创 2021-11-15 09:55:15 · 4592 阅读 · 5 评论 -
什么?还在用delete删除数据《死磕MySQL系列 九》
别再用delete删除数据系列文章一、表空间系列文章一、原来一条select语句在MySQL是这样执行的《死磕MySQL系列 一》二、一生挚友redo log、binlog《死磕MySQL系列 二》参与了好几个项目开发,每个项目随着业务量的增大,MySQL数据日益剧增,例如其中一个项目中得用户足迹表,那是非常的疯狂,只怪我大意了,没有闪。这篇文章我会delete对性能的影响,以及如何以正确的姿势来删除数据。在MySQL中Innodb存储引擎的表存在两部分,一部分是表结构,另一部分是表数据。在M原创 2021-11-12 14:35:23 · 2571 阅读 · 1 评论 -
无法复现的“慢”SQL《死磕MySQL系列 八》
一网打尽MySQL的各种锁系列文章一、为什会出现无法复现的“慢”SQL二、四种flush对性能的影响三、如何设置刷脏页的速度系列文章一、原来一条select语句在MySQL是这样执行的《死磕MySQL系列 一》二、一生挚友redo log、binlog《死磕MySQL系列 二》项目中将MySQL的报错、异常、执行时间长的都打到了钉钉群中,这样有利于平时及时处理。今天要聊的是无法复现的慢查询。一、为什会出现无法复现的“慢”SQL在一生挚友redo log、binlog《死磕MySQL系列 二》中详原创 2021-11-10 11:27:39 · 1812 阅读 · 2 评论 -
字符串可以这样加索引,你知吗?《死磕MySQL系列 七》
字符串可以这样加索引,你知吗?系列文章一、如何建立索引创建索引如何确定使用多长的前缀系列文章二、一生挚友redo log、binlog《死磕MySQL系列 二》三、MySQL强人“锁”难《死磕MySQL系列 三》相信大多数小伙伴跟咔咔一样,从未关注给字符串加索引还可以设置长度,今天就来聊聊如何正确的给字符串加索引。一、如何建立索引大多数系统都会存在用户表,并且系统初始设计使用了手机号码登录的。这是产品提出了一个需求,让系统也可以支持邮箱登录。肯定知道的是若不给邮箱字段添加索引执行查询是会全原创 2021-11-08 09:44:34 · 1281 阅读 · 1 评论 -
五分钟,让你明白MySQL是怎么选择索引《死磕MySQL系列 六》
一网打尽MySQL的各种锁系列文章前言一、系列文章二、一生挚友redo log、binlog《死磕MySQL系列 二》三、MySQL强人“锁”难《死磕MySQL系列 三》前言如果你对索引的知识点还不太清楚,可以直接通过传送门查看咔咔总结的索引知识点。揭开MySQL索引神秘面纱索引是为加速查询速度,创建的索引也符合所有规则,但MySQL就是不去使用你想让使用的索引,导致查询速度变慢并产生大量慢查询记录。今天就从这个问题来聊聊MySQL选择索引时都做一些什么事情。一、...原创 2021-11-05 09:58:09 · 2625 阅读 · 1 评论 -
如何选择普通索引和唯一索引《死磕MySQL系列 五》
一网打尽MySQL的各种锁系列文章前言系列文章一、原来一条select语句在MySQL是这样执行的《死磕MySQL系列 一》二、一生挚友redo log、binlog《死磕MySQL系列 二》三、MySQL强人“锁”难《死磕MySQL系列 三》前言看过前几期文章的伙伴会发现并没有聊过关于索引和事务的知识点,这两个大点再之前的文章中已经写过了。这里给大家一个传送门点击直接查看哈!揭开MySQL索引神秘面纱上来就问MySQL事务,瑟瑟发抖…MVCC:听说有人好奇我的底层实现幻读:听说有人认原创 2021-11-03 14:26:57 · 1212 阅读 · 1 评论 -
S 锁与 X 锁的爱恨情仇《死磕MySQL系列 四》
一网打尽MySQL的各种锁系列文章前言系列文章一、原来一条select语句在MySQL是这样执行的《死磕MySQL系列 一》二、一生挚友redo log、binlog《死磕MySQL系列 二》三、MySQL强人“锁”难《死磕MySQL系列 三》前言...原创 2021-11-02 16:04:48 · 2488 阅读 · 1 评论 -
MySQL强人“锁”难《死磕MySQL系列 三》
一网打尽MySQL的各种锁系列文章前言系列文章一、原来一条select语句在MySQL是这样执行的《死磕MySQL系列 一》二、一生挚友redo log、binlog《死磕MySQL系列 二》前言最近数据库老是出现下面情况,从以下俩种情况出发详细的理解一下MySQL中的锁。Lock wait timeout exceeded; try restarting transactionDeadlock found when trying to get lock; try restarting tr原创 2021-10-09 10:49:23 · 3601 阅读 · 1 评论 -
一生挚友redo log、binlog《死磕MySQL系列 二》
一生挚友redo log、binlog原创 2021-09-26 11:20:09 · 3511 阅读 · 2 评论 -
原来一条select语句在MySQL是这样执行的《死磕MySQL系列 一》
原来一条select语句在MySQL是这样执行的原创 2021-08-23 13:21:16 · 4224 阅读 · 10 评论 -
幻读:听说有人认为我是被MVCC干掉的
文章目录前言一、我是谁?二、为什么有人会认为我是被MVCC干掉的三、我真的是被MVCC解决的?前言我是幻读,听说有人认为我是MVCC解决的,为了让大家更好的理解我的身世,只能亲自来解释一下。一、我是谁?先给大家做一个简单的自我介绍,我就是事务并发时会产生的三大问题之一。我的其它俩兄弟脏读、不可重复读被MVCC在上一个回合无情的干掉了,至于上个回合发生了什么可以去看剧情回顾。我的由来就是因为主人在操作一组数据时还有很多人也在对这组数据进行操作。举一个简单的案例:主人根据条件在对一组数据进行过滤原创 2021-04-27 11:07:12 · 15702 阅读 · 22 评论 -
MVCC:听说有人好奇我的底层实现
你对MVCC的底层实现原理知道多少呢!面试高频点,你值得拥有。原创 2021-04-06 10:52:21 · 6421 阅读 · 5 评论 -
上来就问MySQL事务,瑟瑟发抖...
事物在项目中大量存在,接下来将从各个方面对事物进行解读前言依稀记得在刚开始接触数据库的时候一直认为事物是特别神秘的物种。也为其最重要的特性所折服,就是事物内的所有语句要么全部成功,要么全部失败,不会出现部分成功部分失败的情况。...原创 2021-03-25 23:26:45 · 3693 阅读 · 3 评论 -
MySQL查询优化必备
你应该会的MySQL查询优化技能原创 2021-03-04 11:09:24 · 3922 阅读 · 6 评论 -
揭开MySQL索引神秘面纱
索引是面试必不可少的内容,想要短时间全部掌握是不可能的,需要长时间的积累才能有一定的认识。文章目录前言一、MySQL索引到底是什么二、MySQL为什么使用B+Tree索引1. B-tree前言对于MySQL索引的知识点一直都像大杂烩,好像什么都知道,如果进行深究的话可能一个也答不上来。例如最近公司项目数据库出现了大量的慢查询,然而你对索引只是理解在只要给表中经常使用的列创建上索引就好了的这个层面话,那么这个问题哪怕是你短时间解决好了,但同时你也给自己埋了一个坑。为了避免这种尴尬的事情发生,咔咔.原创 2021-02-06 12:03:03 · 3160 阅读 · 4 评论 -
别再用offset和limit分页了
终于要对MySQL优化下手了,本文将对分页进行优化说明,希望可以得到一个合适你的方案分页优化前言一、表结构二、初探查询效率三、分析查询耗时的原因四、优化五、方案落地前言分页这个话题已经是老生常谈了,但是有多少小伙伴一边是既希望优化的自己的系统,另一边在项目上还是保持自己独有的个性。优化这件事是需要自己主动行动起来的,自己搞测试数据,只有在测试的路上才会发现更多你未知的事情。本文咔咔也会针对分页优化这个话题进行解读。一、表结构这个数据库结构就是咔咔目前线上项目的表,只不过咔咔将字段名改了而.原创 2021-01-21 11:00:53 · 1691 阅读 · 0 评论 -
MySQL如何同时自增自减多个字段
本文将带大家聊一下如何同时自增自减多个字段前言最近小Q同学去面试了,然后就问了题目的问题,如何同时自增自减多个字段。小Q一时回答不出来,最终的结果就是回家等通知…关于这个问题咔咔来给小Q简单的进行解答一下。一、ThinkPHP框架实现小Q最熟悉的框架就是ThinkPHP,那么咔咔就先使用ThinkPHP来解决这个问题。首先,解决这个问题需要对框架的inc和setInc有一定的了解,在框架中也就是使用这俩个函数进行自增或者自减的。但是俩者是有区别的,inc是Db类中的方法,setInc实际.原创 2021-01-06 16:48:04 · 2124 阅读 · 0 评论 -
你们要的MyCat实现MySQL分库分表来了
借助MyCat来实现MySQL的分库分表落地,没有实现过的,或者没了解过的可以看看MyCat实现MySQL分库分表前言一、MyCat安装二、配置MyCat三、数据库信息准备前言在之前写过一篇关于mysql分库分表的文章,那篇文章只是给大家提供了一个思路,但是回复下面有很多说是细节问题没有提到。所以咔咔就在出了这篇文章。本文只是针对其中的一个细节而已,就是如何落地MySQL的分库分表,本文使用数据库中间件MyCat来实现。其中还有最多的回复是分库分表后的分页查询如何操作,这个问题也会在后文继续写.原创 2020-08-17 11:06:22 · 719 阅读 · 1 评论 -
不信你看看,MySQL分库分表没有那么难
数据库分库分表估计很多伙伴都没有实践过,就是因为自己公司的业务不是很多,没有那么多数据。假如有一天项目的人数上来了,你写的系统支撑不住了,希望这篇文章带给你一丝丝的思路。这里写目录标题前言一、初始架构二、用户开始激增解决方案三、保证查询性能四、配置读写分离来按需扩容前言在面试过程中你是不是会经常遇到对于数据库分库分表你有什么方案啊!在平时看博客时你是不是也经常刷到MySQL如何分库分表。然而你是不是点进去看了不到10秒就直接退出窗口。那是因为写的文章不是什么水平切分,就是垂直切割,在一个自身.原创 2020-07-26 11:28:40 · 1119 阅读 · 0 评论 -
【MySQL】在Centos上如何修改密码
猛然间我忘记了我虚拟机的数据库密码然后就顺便写一篇文章出来,为了后边使用方便操作步骤1.登录失败2.查看原始密码grep 'temporary password' /var/log/mysqld.log3.然后用这个密码进行登录4.进行一次重置密码,这里的密码需要设置的复杂一点alter user 'root'@'localhost' identified by 'Fa...原创 2020-04-16 10:36:32 · 2153 阅读 · 0 评论 -
【MySQL】一文解决主库已有数据的主从复制
主从复制配置方案和实际的场景有很多,在之前配置了主从库都是全新的配置方案在这一篇会配置主库存在数据然后配置主从复制主从复制主从复制所需要的环境应用的场景开始配置给mysql_master主库添加一条数据测试mysql_slave是否已经开启了主从复制开始给mysql-slave1导入mysql-master的数据库配置主从复制测试博主微信欢迎交流主从复制所需要的环境【Docker】简...原创 2020-04-09 16:00:49 · 1943 阅读 · 3 评论 -
【MySQL】关于在docker容器中修改了MySQL的配置导致容器重启不了
此文解决的问题:docker创建的mysql容器如何修改配置文件docker容器中修改了MySQL的配置导致容器重启不了错误日志的权限不足问题还原在mysql的配置文件里边添加了一个MySQL的错误日志的配置项然后重启MySQL的容器就重启不起来发现问题使用docker logs 容器ID 查看错误信息会发现是是配置的错误日志文件没有权限解决问题把容器里边的MyS...原创 2020-04-09 13:18:25 · 3604 阅读 · 0 评论 -
【MySQL】使用docker配置主从复制(主库和从库都是全新的情况)
这篇文章只是让大家了解一下mysql的主从复制,并且实现了一个案例但是这个案例不是典型的案例后面会在写其他的配置方法主从复制解决的问题数据分布负载均衡备份高可用和故障切换在这个案例中,我们只实现了备份 。其他几个点,我们后边一个一个实现,就不写概念了主从复制是如何工作的这里写的只是简单的实现过程,具体细节是很麻烦的,建议大家都去了解了解主库会把数据的更改记录在一...原创 2020-04-08 16:01:56 · 2136 阅读 · 0 评论 -
【MySQL优化】in 和 exists 使用区别
点击查看MySQL优化系列文章集锦,从头到尾全部案例均配备源码,让你轻松看文章,轻松实践如你不想自己测试案例,可直接看优化总结,了解知识点即可本篇文章没有实际案例,只说明用法首先我们先来看俩张表bookclass这个时候我们使用in来进行一次查询 bookid存在class表的数据select * from book b where bookid in (select id...原创 2020-04-08 01:08:45 · 633 阅读 · 0 评论 -
【Ubuntu】安装和卸载MySQL8.0
在之前我已经安装过了先演示卸载,然后在进行安装这里写目录标题卸载MySQL8.0首先在终端中查看MySQL的依赖项:卸载:清除残留数据:dpkg -l|grep ^rc|awk '{print$2}'|sudo xargs dpkg -P查看剩余依赖继续删除剩余依赖项,安装MySQL8.0到官网下载deb文件将下载的文件拖拽到ubuntu的桌面并终端进入桌面博主微信欢迎交流卸载MySQL...原创 2020-04-07 14:18:19 · 11060 阅读 · 3 评论 -
【MySQL优化】避免索引失效的十个关键点,你都知道那些?
点击查看MySQL优化系列文章集锦,从头到尾全部案例均配备源码,让你轻松看文章,轻松实践如你不想自己测试案例,可直接看优化总结,了解知识点即可避免索引失效的十大关键点最左侧原则不在索引列上做任何操作(计算,函数,自动或者手动的类型转换)都会导致索引失效,进行全表扫描范围条件之后的索引会失效打死都不用select * ,尽量使用覆盖索引(就是只查询建立的索引的字段)。千万不要懒,说过后在改,...原创 2020-04-04 00:08:01 · 871 阅读 · 0 评论 -
【MySQL优化】一分钟带你了解三表联查优化
点击查看MySQL优化系列文章集锦,从头到尾全部案例均配备源码,让你轻松看文章,轻松实践如你不想自己测试案例,可直接看优化总结,了解知识点即可三表优化创建表模拟数据查询语句分析语句建立索引此次优化总结博主微信欢迎交流创建表其余俩张边在双表优化的案例说过,过去直接复制即可双表优化CREATE TABLE IF NOT EXISTS `phone` (`phoneid` INT(10...原创 2020-04-03 21:45:01 · 4327 阅读 · 3 评论 -
【MySQL优化】一分钟带你了解单表优化
点击查看MySQL优化系列文章集锦,从头到尾全部案例均配备源码,让你轻松看文章,轻松实践单表优化sql创建代码添加测试数据查询表数据sql需求:写出SQL语句并执行初步分析SQL语句建立索引在次使用explain分析删除索引重新建立索引,并查看分析此次优化总结博主微信欢迎交流sql创建代码CREATE TABLE IF NOT EXISTS `article` (`id` INT(10...原创 2020-04-03 12:31:14 · 678 阅读 · 0 评论 -
【MySQL优化】一分钟带你了解双表联查优化
点击查看MySQL优化系列文章集锦,从头到尾全部案例均配备源码,让你轻松看文章,轻松实践双表优化创建表模拟数据创建表CREATE TABLE IF NOT EXISTS `class` (`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,`card` INT(10) UNSIGNED NOT NULL,PRIMARY KEY (id));...原创 2020-04-03 12:31:18 · 1231 阅读 · 4 评论 -
【MySQL优化】实际案例MySQL优化
索引优化一直在MySQL中占着很重要的位置,但是刚刚入门的还没有接触到这块的知识。已经工作很久也不是很注重这块,只求功能不求性能。当然咔咔也包含在这其中。这篇文章不会过深的探讨索引原理,只是针对于实际案例给予优化方案。咔咔在网上也搜索了很多的关于MySQL优化方面的文章,但是大多都是以原理为主。个别的排版还很难辨认,于是在2020/4/2号的22:51咔咔开始撸这篇文章大战SQL...原创 2020-04-03 12:28:59 · 723 阅读 · 0 评论 -
【Mysql】在tp5里边使用原生sql根据格式化时间获取数据
这篇文章只是记录一个小小的知识点,会抽时间把mysql根据时间查询的大多数情况都会一一列举出来根据时间获取数据需求代码博主微信欢迎交流需求根据时间获取数据前端传过来的数据是格式化好的时间(2020-3-31)数据库存储是时间戳根据前端传过来的数据进行查询数据代码 $param = $this->request->param(); i...原创 2020-03-31 21:20:10 · 876 阅读 · 0 评论 -
【MySQL】关于查询某一年、某一月、某一天的查询
先看代码SELECT * FROM db_cost_record WHERE PERIOD_DIFF( date_format( now() , '%Y%m' ) , date_format( from_unixtime(`cr_time`), '%Y%m' ) ) =1数据库存储格式为int类型你为什么查询不出来看一下你的数据库字段类型是否为int,网上查询的资料大多数字段类型都是...原创 2020-01-17 11:17:27 · 1068 阅读 · 0 评论 -
【MySQL】一个字符串在另一个字符串中(locate和find_in_set)
1. 首先先说locate语法$where = "locate($video_category,vi_classifyType)";这里的需求是vc_id在vi_classifyType中,使用了locate后发现14,24的数据都出现了,很明显是把只要带4的数据都给拿出来了2.find_in_set语法$where = "find_in_set($video_category,v...原创 2019-12-10 18:11:14 · 795 阅读 · 0 评论