MySQL
文章平均质量分 80
lkforce
这个作者很懒,什么都没留下…
展开
-
MySQL中YEAR_MONTH,HOUR_MINUTE等关键字的用法
MySQL中的时间单位有以下这些:MICROSECOND SECOND MINUTE HOUR DAY WEEK MONTH QUARTER YEAR SECOND_MICROSECOND MINUTE_MICROSECOND MINUTE_SECOND HOUR_MICROSECOND HOUR_SECOND HOUR_MINUTE DAY_MICROSECOND DAY_SECOND DAY_MINUTE DAY_HOUR YEAR_MONTH其中YEA原创 2020-11-06 19:32:02 · 15460 阅读 · 0 评论 -
Mysql的INTERVAL()函数和INTERVAL关键字
一,INTERVAL()函数INTERVAL()函数可以返回分段后的结果,语法如下:INTERVAL(N,N1,N2,N3,..........)其中,N是要判断的数值,N1,N2,N3,...是分段的间隔。这个函数的返回值是段的位置:如果N<N1,则返回0,如果N1<=N<N2,则返回1,如果N2<=N<N3,则返回2。所以,区间是前闭后开的。举个例子:有这样的数据:然后执行以下sql:SELECT id,perce.原创 2020-11-06 19:26:19 · 99364 阅读 · 0 评论 -
Mysql的分段函数INTERVAL()和分值函数ELT()
一,INTERVAL()函数INTERVAL()函数可以返回分段后的结果,语法如下:INTERVAL(N,N1,N2,N3,..........)其中,N是要判断的数值,N1,N2,N3,...是分段的间隔。这个函数的返回值是段的位置:如果N<N1,则返回0,如果N1<=N<N2,则返回1,如果N2<=N<N3,则返回2。所以,区间是前闭后开的。举个例子:有这样的数据:然后执行以下sql:SELECT id,perce.原创 2020-11-06 19:14:00 · 4171 阅读 · 0 评论 -
MySQL死锁日志的查看和分析
目录一,关于MySQL的死锁二,人造一个死锁的场景三,查看最近一次死锁的日志四,死锁日志的内容1,事务1信息2,事务1持有的锁3,事务1正在等待的锁4,事务2信息5,事务2正在持有的锁6,事务2正在等待的锁7,死锁处理结果五,关于mysql的八种锁1,行锁(Record Locks)2,间隙锁(Gap Locks)3,临键锁(Next-key Locks)4,共享锁/排他锁(Shared and Exclusive Locks)5,意向共享原创 2020-09-24 19:55:28 · 27090 阅读 · 2 评论 -
MySQL日志之redo log和undo log简介
目录redo log和undo log篇关于redo log一,redo log的文件二,redo log的写入三,redo log的删除四,查看redo log相关的配置关于undo log一,undo log的文件二,undo log的写入三,undo log的空间释放四,查看redo log相关的配置五,关于undo log的segmentredo log和undo log的协作关于XA关于binlog,redo log,undo log的操原创 2020-09-11 19:49:01 · 3191 阅读 · 0 评论 -
MySQL日志之binlog简介
MySQL中的日志类型:1,Error Log,错误日志。2,General Query Log,查询日志,记录了每条sql的信息,包括查询和修改等,对性能影响比较大。3,Slow Query Log,慢查询日志,记录查询比较慢的sql。可以设置阈值。4,Binary Log,也就是binlog,二进制日志,归档日志,记录了数据库改动。包括建表,删表,数据修改等。5,Redo Log,重做日志。用于恢复提交后的物理数据页。6,Undo Log,回滚日志。用于回滚行记录到...原创 2020-09-11 18:51:55 · 1245 阅读 · 0 评论 -
MyBatis源码学习(六)——在代码中调用Mapper接口时发生了什么
小结:1,开始,MapperProxy.invoke().2,创建MapperMethod。包括创建SqlCommand,封装sql,创建MethodSignature,封装方法参数。3,MapperMethod.execute()4,区分增删改查,查询时,统一调用DefaultSqlSession.selectList()5,CachingExecutor.query()6,SimpleExecutor.doQuery()。创建StatementHandler,确定statemen原创 2020-06-10 20:10:26 · 1199 阅读 · 0 评论 -
MySQL8.0新特性学习笔记(六):新特性介绍
目录一,redo log重构二,原子DDL三,直方图四,Hash Join五,降序索引六,隐藏索引七,InnoDB读锁优化八,窗口函数九,新的优化器提示 SET_VAR十,字符集优化十一,binlog复制优化十二,持久化AUTO_INCREMENT值十三,JSON语法19年10月14日MySQL发布了8.0.18版本,GA稳定版,介绍一下My...原创 2019-11-07 15:07:17 · 1668 阅读 · 2 评论 -
MySQL8.0新特性学习笔记(五):JSON格式简介和JSON函数详解
目录JSON格式简介定义用户变量JSON格式的规范化JSON的路径表达式JSON的比较和排序JSON的函数一,创建JSON格式数据1,JSON_ARRAY([val[, val] ...])2,JSON_OBJECT([key, val[, key, val] ...])3,JSON_QUOTE(string)二,JSON的查询1,JSON_CONT...原创 2019-11-07 10:49:57 · 17407 阅读 · 0 评论 -
MySQL8.0新特性学习笔记(四):Hash Join
目录准备工作一:驱动表和被驱动表准备工作二:MySQL8.0之前的连接方式Hash JoinMySQL8.0正式引入了Hash Join的连接方式,下面介绍一下这种连接方式,并且和之前的连接方式做一下对比。准备工作一:驱动表和被驱动表比如这样一个使用了连接的sql:SELECT * from tableA join tableB on tableA.code=t...原创 2019-11-06 18:03:36 · 1650 阅读 · 0 评论 -
MySQL8.0新特性学习笔记(三):直方图
目录一,直方图简介二,直方图的生成三,直方图的删除四,直方图的存储五,举例说明直方图的作用六,直方图和索引七,获得直方图的信息一,直方图简介直方图,histogram,直译就是柱状图,国内多翻译为直方图。直方图不是图,是对表的某个字段数据分布的统计,这种数据统计是基于某字段的实际存储数据分布得出的。这种分布统计可以帮助查询优化器掌握字段真实的情况,从而得...原创 2019-11-06 17:43:37 · 1549 阅读 · 0 评论 -
MySQL8.0新特性学习笔记(二):窗口函数
目录一,简介二,窗口函数的两种写法三,窗口表达式语法1,PARTITION BY子句2,ORDER BY子句3,frame子句四,窗口函数介绍1,序号函数:row_number(),rank(),dense_rank()2,分布函数:percent_rank() / cume_dist()3,前后函数:lead() / lag()4,头尾函数:first...原创 2019-11-06 17:23:34 · 3014 阅读 · 2 评论 -
MySQL8.0新特性学习笔记(一):binlog复制策略优化
看一下几个版本以来binlog复制策略的演进。5.6以前的版本经典的主从复制模型:1,Master提交事务。2,binlog写入binlog文件。3,Slave的IO线程把Master上的binlog写入Slave的RelayLog。4,Slave单线程从RelayLog中读取日志并执行。瓶颈:单线程处理RelayLog太慢。5.6版本开始使用库级的...原创 2019-11-06 16:56:32 · 1815 阅读 · 0 评论 -
MySQL中group by和order by同时使用
本文就和大家一起深入研究下mysql中group by与order by.下面是我模拟我的内容表 我现在需要取出每个分类中最新的内容select * from testgroup by category_id order by `date`结果如下 明显。这不是我想要的数据,原因是msyql已经的执行顺序是 引用写的顺序:select ... from... w转载 2016-09-20 17:30:07 · 12381 阅读 · 1 评论 -
关于mysql字段名和保留字冲突的问题
建了个表,有个字段起名为key,结果insert语句报错了,说是sql不对。建表语句如下:CREATE TABLE `base_error_message_test` ( `message_id` varchar(50) NOT NULL, `message` text , `send_count` int(2) DEFAULT '0' , `status`原创 2016-10-31 16:37:32 · 24636 阅读 · 0 评论 -
mysql中的utf8mb4,可以支持Emoji表情的编码格式
一、简介MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。二、内容描述那上面说了既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原转载 2017-01-12 17:49:01 · 1913 阅读 · 0 评论 -
记一次MySQL不使用索引问题的探究
今天发现一个MySQL的查询,没有使用索引,情况如下:InnoDB的表,表里的字段:id,int类型,主键order,varchar类型feed_datetime,datetime类型,有索引其他字段,因为没什么关系就不写了 执行的sql如下:SELECT id,orderFROM order_tableWHERE原创 2018-01-24 10:54:08 · 2544 阅读 · 0 评论 -
MySQL5.7官方文档翻译--优化器成本模型
成本模型,也有叫做代价模型,原文是Cost Model,下面翻译都使用成本模型。8.9.5 优化器的成本模型SQL查询的方式多种多样,MySQL的优化器使用基于对查询成本进行预估的成本模型来生成执行方案。优化器拥有一系列编译过的“成本常量”来决定使用怎样的执行方案。除了编译过的成本常量之外,优化器在构建执行方案的时候还会用到一个数据库,也是用来做成本评估的。这些成本评估用的数据保...翻译 2018-01-23 19:16:21 · 1279 阅读 · 0 评论 -
B+树和MySQL
在mysql数据库中,MyISAM引擎和InnoDB引擎的主键和索引都使用了B+树,但是二者对B+树的使用略有区别,分别介绍如下。注:B+树的叶子节点包含关键字和数据部分,还有指向下一个兄弟叶子节点的指针。非叶子节点只包含关键字和指针,不包含数据部分。B+树和MyISAM在MyISAM引擎中,B+树的叶子节点的数据部分保存的是数据库记录的地址,主键索引和辅助索引都是如此,这种索引方式叫原创 2018-01-16 17:31:46 · 1007 阅读 · 0 评论 -
MySQL中的cardinality 和selectivity
cardinality 在英语中的本意是基数,在MySQL中,可以理解为索引基数,这个概念代表了某个索引字段(包括复合索引)中不同数值(数值组合)的个数,相当于Distinct之后的结果。官网中举的是性别的例子,性别字段只有“男”或者“女”这两种可能的值,所以这个字段的cardinality 就是2。selectivity可以被认为是选择度,是由cardinality 算出来的,公式是原创 2018-01-24 16:37:43 · 2779 阅读 · 0 评论 -
mysql的char,varchar,text类型的区别总结
定义char(n),代表字符数最大是n,字符数超过n会被截断,超过n的部分丢弃。注意,n是字符,不是字节,数据占用字节数另算。varchar(n),和char(n)一样,代表字符数最大是n,字符数超过n会被截断,超过n的部分丢弃。注意,n是字符,不是字节,数据占用字节数另算。text(n),这个n写了也没什么用,实际用的时候多数都不写后面的n,直接用text。存储空间原创 2018-01-08 20:33:41 · 25711 阅读 · 0 评论 -
Mysql的组合字段Generated Column
所谓组合字段(自创的名字,没有在网上找到通用的名字),是MySQL5.7加入的新功能,可以定义一个字段,值是其他字段值的组合。官网中举了一个勾股定理的例子:CREATE TABLE triangle ( sidea DOUBLE, sideb DOUBLE, sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb)));INSER...原创 2018-03-14 17:12:41 · 4725 阅读 · 0 评论 -
MySQL中表的字段信息查询--information_schema.COLUMNS
MySQL的information_schema库中有个COLUMNS表,里面记录了mysql所有库中所有表的字段信息,该表信息如下: COLUMNS表的每一条记录都对应了数据库中某个表的某个字段,该表记录了如下信息:TABLE_CATALOGMySQL官方文档中说,这个字段值永远是def,但没写这个字段是干嘛用的。网上有把这个叫表限定符的,有叫登记目录的。作用疑似是和其他种类的数据库做区分。TA...原创 2018-03-14 17:20:12 · 25805 阅读 · 0 评论 -
关于MySql8小时空闲后连接超时问题(testOnBorrow,logAbandoned等)
程序和数据库之间的连接,8小时如果没有数据访问,MySQL会断开该连接。如果使用的连接池,该断开操作不会通知连接池,造成连接池获取连接后无法连接数据库,报的异常大概是这样的:Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received fro原创 2016-08-01 20:24:58 · 5924 阅读 · 1 评论