202011-25 Navicat Premiun远程连接MySQL报错10038解决方案 远程连接MySQL失败,可能有一下原因:1、小伙子/小姑凉注意一下你的ip是否输入正确了!!2、网络或防火墙问题1)、排查网络问题使用命令:ping192.168.1.1查看网络请求是否超时。正常接收数据进行下一步排查2)、排查云服务器防火墙是否将其挡住。使用命令:telnet192.168.1.13306,如果连接失败,有两个原因a)、查看云服务器端口是否开放。开放情况(我这边使用的是... 继续阅读 >
202011-25 详解mysql中explain的type 导语:很多情况下,有很多人用各种select语句查询到了他们想要的数据后,往往便以为工作圆满结束了。这些事情往往发生在一些学生亦或刚入职场但之前又没有很好数据库基础的小白身上,但所谓闻道有先后,只要我们小白好好学习,天天向上,还是很靠谱的。当一个sql查询语句被写出来之后,其实你的工作只完成了一小半,接下来更重要的工作是评估你自己写的sql的质量与效率。mysql为我们提供了很有用的辅助武器explain,它向我们展示了... 继续阅读 >
202011-25 浅析MysQL B-Tree 索引 B-Tree索引不同的存储引擎也可能使用不同的存储结构,i如,NDB集群存储引擎内部实现使用了T-Tree结构存储这种索引,即使其名字是BTREE;InnoDB使用的是B+Tree。B-Tree通常一位这所有的值都是按顺序存储的,并且每一个叶子页道根的距离相同。下图大致反应了InnoDB索引是如何工作的。为什么mysql索引要使用B+树,而不是B树,红黑树看完上面的文章就可以理解为何B-Tree索引能够快速访问数据了。因为存储引擎不再需要进行全表扫描获取... 继续阅读 >
202011-22 浅析MySQL的WriteSet并行复制 【历史背景】岁月更迭中我已经从事MySQL-DBA这个工作三个年头,见证MySQL从“基本可用”,“边缘系统可以用MySQL”,“哦操!你怎么不用MySQL”;正所谓!“一个数据库的境遇既取决于历史的进程,取决于它的自我奋斗!”,关于“历史的进程”在此不表,关于“自我奋斗”这里也只想谈一下并行复制的几个关键时间结点总的来说MySQL关于并行复制到目前为止经历过三个比较关键的时间结点“库间并发”,“组提交”,“写集合... 继续阅读 >
202011-22 MySQL 如何连接对应的客户端进程 问题对于一个给定的MySQL连接,我们如何才能知道它来自于哪个客户端的哪个进程呢?HandshakeResponseMySQL-Client在连接MySQL-Server的时候,不只会把用户名密码发送到服务端,还会把当前进程id,操作系统名,主机名等等信息也发到服务端。这个数据包就叫HandshakeResponse官方有对其格式进行详细的说明。我自己改了一个连接驱动,用这个驱动可以看到连接时发送了哪些信息。2020-05-1915:31:04,976-mysql-connector-pyth... 继续阅读 >
202011-22 MySQL 连接查询的原理和应用 概述MySQL最强大的功能之一就是能在数据检索的执行中连接(join)表。大部分的单表数据查询并不能满足我们的需求,这时候我们就需要连接一个或者多个表,并通过一些条件过滤筛选出我们需要的数据。了解MySQL连接查询之前我们先来理解下笛卡尔积的原理。数据准备依旧使用上节的表数据(包含classes班级表和students学生表):mysql>select*fromclasses;+---------+-----------+|classid|classname|+---------+-----------... 继续阅读 >
202011-19 浅谈MySQL中float、double、decimal三个浮点类型的区别与总结 下表中规划了每个浮点类型的存储大小和范围:类型大小范围(有符号)范围(无符号)用途==float==4bytes(-3.402823466E+38,-1.175494351E-38),0,(1.175494351E-38,3.402823466351E+38)0,(1.175494351E-38,3.402823466E+38)单精度浮点数值==double==8bytes(-1.7976931348623157E+308,... 继续阅读 >
202011-19 MySQL中int(n)后面的n到底代表的是什么意思 你可能已经知道int(1)这个长度1并不代表允许存储的宽度!但对这个长度很多人也没有真正研究过到底代表什么,今天我就来简单的分析一下!先看一个简单的建表小案例:createtabletest(idint(11)unsignedNOTNULLAUTO_INCREMENT,uidint(3)NOTNULL,PRIMARYKEY(id))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;这里以uid字段为例,我们这里设置的是int(3)那么问题来了难道我们设置int(3),就不能存放数据1234了?那么你完全可以... 继续阅读 >
202011-19 MySQL如何使用时间作为判断条件 背景:在开发过程中,我们经常需要根据时间作为判断条件来查询数据,例如:当月,当日,当前小时,几天内......1.当月我们只需要使用一个mysql的MONTH(date)函数即可实现。(注意判断年份)MONTH(date);--用法:MONTH函数返回一个整数,表示指定日期值的月份。--举例SELECTMONTH('2020-11-1100:00:00')--返回值是112.30天内之所以把“30天内”放在当月的后面,是因为我经常会遇到这两个需求相互转换的情况,“30天内”也可以... 继续阅读 >
202011-19 详解MySQL 数据库范式 前言:关于数据库范式,时常有听说过,一直没有详细去了解。一般数据库书籍或数据库课程会介绍范式相关内容,范式也经常出现在数据库考试题目中。不清楚你是否对范式有比较清晰的了解呢?本篇文章我们一起来学习下数据库范式吧。1.数据库范式简介为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,... 继续阅读 >
202011-19 MySQL 子查询和分组查询 概述子查询是SQL查询中的重要一块,是我们基于多表之间进行数据聚合和判断的一种手段,使得我们的处理复杂数据更加的便捷,这一节我们主要来了解一下子查询。先做一下数据准备,这边建立三张表:班级、学生、毕业成绩表,用于后面的操作:dropdatabaseifexists`Helenlyn_Class`;createdatabase`Helenlyn_Class`;/*班级表*/DROPTABLEIFEXISTS`classes`;CREATETABLE`classes`(`classid`intprimarykeyAUTO_INCREMEN... 继续阅读 >
202011-19 MySQL 子查询和分组查询 概述子查询是SQL查询中的重要一块,是我们基于多表之间进行数据聚合和判断的一种手段,使得我们的处理复杂数据更加的便捷,这一节我们主要来了解一下子查询。先做一下数据准备,这边建立三张表:班级、学生、毕业成绩表,用于后面的操作:dropdatabaseifexists`Helenlyn_Class`;createdatabase`Helenlyn_Class`;/*班级表*/DROPTABLEIFEXISTS`classes`;CREATETABLE`classes`(`classid`intprimarykeyAUTO_INCREMEN... 继续阅读 >
202011-19 MySQL limit分页大偏移量慢的原因及优化方案 在MySQL中通常我们使用limit来完成页面上的分页功能,但是当数据量达到一个很大的值之后,越往后翻页,接口的响应速度就越慢。本文主要讨论limit分页大偏移量慢的原因及优化方案,为了模拟这种情况,下面首先介绍表结构和执行的SQL。场景模拟建表语句user表的结构比较简单,id、sex和name,为了让SQL的执行时间变化更加明显,这里有9个姓名列。CREATETABLE`user`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'... 继续阅读 >
202011-19 MySQL主从复制原理以及需要注意的地方 写在前面最近在写Mycat专题,由于不少小伙伴最近要出去面试,问我能不能简单写下MySQL的主从复制原理和注意事项,因为在之前的面试中被问到了这些问题。我:可以啊,安排上了!!主从复制原理(1)Master将数据改变记录到二进制日志(binarylog)中,也就是配置文件log-bin指定的文件,这些记录叫做二进制日志事件(binarylogevents);(2)Slave通过I/O线程读取Master中的binarylogevents并写入到它的中继日志(relayl... 继续阅读 >
202011-17 MySQL数据类型优化原则 MySQL支持的数据类型很多,选择正确的数据类型对于高性能至关重要。下面几个简单的原则都有助于做出更好的选择。更小的通常更好应该尽量使用可以正确储存数据的最小数据类型。更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少。如果无法确定哪个数据类型时最好的,就选择你认为不会超过范围的最小类型。简单就好简单数据类型的操作通常需要更少的CPU周期。例如,整形比字符操... 继续阅读 >
202011-17 MySQL 分组查询和聚合函数 概述相信我们经常会遇到这样的场景:想要了解双十一天猫购买化妆品的人员中平均消费额度是多少(这可能有利于对商品价格区间的定位);或者不同年龄段的化妆品消费占比是多少(这可能有助于对商品备货量的预估)。这个时候就要用到分组查询,分组查询的目的是为了把数据分成多个逻辑组(购买化妆品的人员是一个组,不同年龄段购买化妆品的人员也是组),并对每个组进行聚合计算的过程:。分组查询的语法格式如下:selectcname,gr... 继续阅读 >