
sql
文章平均质量分 66
pmdream
每天进步一点点,如果没有学习那就是倒退
展开
-
mysql按照字典序排序
ORDER BY CONVERT(fieldUSING gbk) COLLATE gbk_chinese_ci ASC;有时候直接order by field,并不起作用,这时候需要转换一下原创 2022-04-25 17:25:18 · 2022 阅读 · 0 评论 -
mysql的format的坑,保留两位小数出现了-0.00
mysql的format的坑,保留两位小数出现了-0.00原创 2021-12-10 19:12:51 · 1125 阅读 · 0 评论 -
[mysql]binlog和redolog有什么区别?
前言可能会考的面试题,我都把redolog原理看一遍了。那么,这个问题怎么回答呢?回答1.redo log 是innodb独有的,binlog是server层实现的,所有引擎都能使用;2.redo log大小固定(可以设置),buffer pool的记录落盘后,日志就可以被覆盖了,无法保证用于数据回滚;3.redolog 更多是为了保证,异常宕机了,之后我们可以根据redo log把没有刷到磁盘中的数据恢复。因为我们的数据都是先写到buffer pool的,然后刷到磁盘中,俗称脏原创 2021-09-02 02:38:22 · 1119 阅读 · 0 评论 -
[mysql]mysql的原子性是怎么实现的?(undolog的实现原理)
前言没看看redolog和undolog的实现,还真不敢说这个原子性是怎么实现的。看完觉得主要分为两方面吧。[mysql]innodb的redolog1. 从redolog的角度规定在执行这些需要保证原子性的操作时必须以组的形式来记录的redo日志,在进行系统崩溃重启恢复时,针对某个组中的redo日志,要么把全部的日志都恢复掉,要么一条也不恢复。...原创 2021-09-02 01:05:19 · 3926 阅读 · 3 评论 -
[mysql]innodb的redo log
前言今天被问到,之前也没太在意这个事情。今天被问到就好好刷一遍。常见问题1. mysql是怎么实现原子性的?2.redo log 和 binlog有什么区别?那么先看一下redolog吧<以下内容学习摘选自 《MySQL 是怎样运行的:从根儿上理解 MySQL》>redo log如果没有redolog,我们的痛点是什么:在真正访问页面之前,需要把在磁盘上的页缓存到内存中的Buffer Pool之后才可以访问事务的更改也是要写到buffer p原创 2021-09-01 21:49:19 · 681 阅读 · 0 评论 -
[mysql]我们业务中replace into会有什么问题?
前言其实业务应该尽量少的使用replace into;问题如果是有id 且有唯一索引的话,按照联合索引做replace into,主键在数据库里面是先delete 然后再insert但是binlog的话,相当于是 id before 8 after 9 相当于只是改了主键的值,因为按照联合索引来去replace into,主键是递增的情况。这样到了binlog 友富那边取出来的就是 update set id = 9 where id =8那这样肯定是不对的,所以再抽取.原创 2021-09-01 01:46:25 · 1247 阅读 · 0 评论 -
[mysql&flink]关于同步数据,binlog怎么做增量
前言之前探讨的,整理一下简单的思路mysql -> hive 进行同步。主要的问题点在于,订阅增量 以及初始化,之间是有时间间隔的。怎么做才能保证数据的准确性前提:都是通过canal 读取binlog。canal进行抽数。弄到kafka 然后flink进行消费。解决方案方案1. 可以使用flink cdc进行消费https://blog.youkuaiyun.com/u011532105/article/details/109644444作者:收数佬大概就是这么个新东西原创 2021-08-23 01:59:35 · 988 阅读 · 0 评论 -
[flink]flink在open里面,mysql链接失效
目录前言原因解决办法关于MYSQL的链接失效解法前言最近看mysql的时候,把之前工作的一些事情串起来。想到了之前,flink任务,链接其实也是8小时就断开了记得好像是,后续就是每次判断一下,是否close或者失效了,写在open里面或者进行reset一下~来防止断开。回顾一下,可能有写东西会对别的人查询资料有帮助。原因因为我们dba 应该是设置了链接超时时间,我印象中是8小时。所以需要在用的时候检查一下。解决办法 private sta...原创 2021-08-23 01:14:20 · 1833 阅读 · 0 评论 -
[mysql]查看数据库状态data的大小和index大小的语句
SELECT TABLE_SCHEMA AS database_name, TABLE_NAME AS table_name, TABLE_ROWS AS table_rows, ENGINE AS table_engine, ROUND(( DATA_LENGTH )/ 1024.0 / 1024, 2 ) AS Data_MB, ROUND(( INDEX_LENGTH )/ 1024.0 / 1024, 2 ) AS Index_MB, ROUND(( DATA_LENGTH + IN.原创 2021-07-23 14:21:20 · 358 阅读 · 0 评论 -
[mysql]设置数据库查询的超时时间
默认是:5.7:set max_execution_time=0;5.6:set max_statement_time=0;但是呢,也是要看mysql的版本的;Mysql版本查看的方式:select version();5.7 和5.6是大版本变化;查看有没有这个时间:show variables like 'max_execution_time';5.6和5.7的变化:mysql 5.6 及以后,有语句执行超时时间变量,用于在服务端原创 2021-07-02 14:41:20 · 13328 阅读 · 0 评论 -
[mysql]面试-InnoDB记录存储结构
内容学习自:https://juejin.cn/book/6844733769996304392/section/6844733770046636040作者:小孩子4919下面就是一些面试假想,这块复习好了,要引导面试官讲mysql的时候给他讲讲内存页~面试官:你们mysql用的是什么存储引擎呢?答:innodb那么为什么用innodb呢?有什么好处呢?他的存储结构是什么样的呢?首先,mysql 存储引擎中,想要获取某些记录的时候,并不是一条一条的读出来的,而是将数据划分.原创 2021-06-23 23:31:43 · 401 阅读 · 1 评论 -
[Mysql]tinyint(1)和tinyint(2)的区别?JDBC中tinyint(1)会自动转为true/false
前言:因为做数据质量,校验mysql到hive的同步的数据质量。是否字段一致发现的问题。mysql中tinyint(1)会自动取出object 会算作true 或者false。原创 2021-04-26 17:46:20 · 3186 阅读 · 0 评论 -
[MySQL]使用on duplicate key update引起主键不连续自增
因为在定时任务里面,把mysql的一个表当做缓存来用;所以就需要update + insert的操作;如果不需要主键还好,但是因为公司要求最好是有主键的(自增id)当然用自增id也是有很多好处的,这边就不做过多赘述现象呢:当然,这边有个bug,导致我某些记录频繁的进行更新;所以就成这样子了;所以解决方式是 先更新,看看影响的行数,如果大于等于1,那么更新成功,否则就进行插入操作;之前写法:<insert id="upsert" parameterTyp..原创 2021-01-22 17:39:05 · 1126 阅读 · 0 评论 -
[Mysql]varchar存中文的长度问题
在主流的MYSQL 5.7varchar(50)能存50个中文汉字,其实就是不管是什么字符,中文也好英文也好,只能存50个。其实varchar类型可以存储多少个汉字,多少个数字,是要具体看我们的mysql版本,目前2020年使用的版本应该都是按照字符数来算了,而不是字节数。如下:5.0.3版本以下,比如 varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉字3字节)5.0.3版本及以上,比如varchar(100),指的是100字符,无论存放的是数字、.原创 2020-12-16 11:45:53 · 8792 阅读 · 0 评论 -
[Mysql]innodb与myISAM的区别
作者:oscarwin链接:https://www.zhihu.com/question/20596402/answer/211492971来源:知乎区别:1. InnoDB 支持事务,MyISAM 不支持事务。这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一;2. InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的 InnoDB 表转为 MYISAM 会失败;3. InnoDB 是聚集索引,MyISAM 是非聚集索引。聚簇索引的文件转载 2020-07-23 11:40:55 · 337 阅读 · 1 评论 -
[SQL]求出所有班级中分数前三名
CREATE TABLE `student` ( `id` int(0) NOT NULL, `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `score` int(0) NULL DEFAULT NULL, `clazz` int(0) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB.原创 2020-07-20 10:56:10 · 1673 阅读 · 0 评论 -
[MYSQL]sql编写题目的小技巧
1.datediff()这两个是等价的也就是2019-07-27到activity_date的时间间隔小于30WHEREdatediff('2019-07-27',activity_date)<30--WHEREactivity_dateBETWEEN'2019-06-28'AND'2019-07-27'https://www.w3school.com.cn/sql/func_datediff.asp...原创 2020-07-17 14:29:59 · 198 阅读 · 0 评论 -
[mysql]MySQL聚簇索引和非聚簇索引
1.聚簇索引是什么?实际存储的循序结构与数据存储的物理机构是一致的,所以通常来说物理顺序结构只有一种,那么一个表的聚簇索引也只能有一个。通常默认都是主键,设置了主键,系统默认就为你加上了聚簇索引,当然有人说我不想拿主键作为聚簇索引,我需要用其他字段作为索引,当然这也是可以的,这就需要你在设置主键之前自己手动的先添加上唯一的聚簇索引,然后再设置主键。聚簇索引是顺序结构与数据存储物理结构一致的一种索引,并且一个表的聚簇索引只能有唯一的一条;找到了索引就找到了需要的数据,那么这个索引就是聚簇索引,转载 2020-07-14 18:33:53 · 231 阅读 · 0 评论 -
[Mysql]为什么Mysql用的是B+树?
MySQL 为什么选择使用 B+ 树?1.前言无论是表中的数据(主键索引)还是辅助索引最终都会使用 B+ 树来存储数据,其中前者在表中会以<id, row>的方式存储,而后者会以<index, id>的方式进行存储 在主键索引中,id是主键,我们能够通过id找到该行的全部列; 在辅助索引中,索引中的几个列构成了键,我们能够通过索引中的列找到id,如果有需要的话,可以再通过id找到当前数据行的全部内容; 2. 有两个方面让InnoDB选...转载 2020-06-30 11:35:18 · 2766 阅读 · 1 评论 -
[Mysql]innodb中,VARCHAR是否可以无限大?
对于VARCHAR(M)类型的列最多可以占用65535个字节。从报错信息里可以看出,MySQL对一条记录占用的最大存储空间是有限制的,除了BLOB或者TEXT类型的列之外,其他所有的列(不包括隐藏列和记录头信息)占用的字节长度加起来不能超过65535个字节。所以MySQL服务器建议我们把存储类型改为TEXT或者BLOB的类型。这个65535个字节除了列本身的数据之外,还包括一些其他的数据(storage overhead),比如说我们为了存储一个VARCHAR(M)类型的列,其实需要占用3部分存储空间:原创 2020-06-30 10:33:30 · 1008 阅读 · 0 评论 -
[Mysql]InnoDB数据页结构(掘金小册阅读笔记)
1.数据页的基本介绍数据页的大小是16kb,有很多种数据页。比如存放表空间头部信息的页,存放Insert Buffer信息的页,存放INODE信息的页,存放undo日志信息的页等。名称 中文名 占用空间大小 简单描述 File Header 文件头部 38字节 页的一些通用信息 Page Header 页面头部 56字节 数据页专有的一些信息 Infimum + Supremum 最小记录和最大记录 26字节...原创 2020-06-19 18:42:51 · 377 阅读 · 0 评论 -
[Mysql]innodb记录compact行格式是什么样子的(笔记)
掘金小册阅读笔记1.innodb记录1.1 数据页mysql有引擎比如InnoDB、MyISAM、Memory(什么时候选取场景)InnoDB采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小一般为16KB。在一般情况下,一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB内容刷新到磁盘中。以16KB的内存页作为单位。1.2行格式设计InnoDB存储引擎设计了4种不同类型的行格式,分别是Compact、Re...原创 2020-06-17 19:30:20 · 510 阅读 · 0 评论 -
[MYSQL]mysql的优化思路
1.从哪些角度可以进行思考?字段选取:进行节衣缩食,选取最合适的字段属性索引相关:怎么建立索引?联合索引和覆盖索引?数据页相关:页分裂,页合并,索引重建语句相关:使用count(1),使用join的须知,使用group by 和order by 的须知,多用 limit,尽量不使用NOT IN和like语句操作,UNION-ALL代替UNION。事务相关:比如容易引起锁竞争的行放在事务语句的后面。适当的选取事务隔离级别也对优化有帮助。分库分表:用什么样的策略分库分表?找到瓶颈所在原创 2020-06-17 15:38:22 · 317 阅读 · 0 评论 -
[SQL]一道简单的sql题,某软开的笔试
CREATE TABLE `department` ( `id` int(0) NOT NULL AUTO_INCREMENT, `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `total_person_count` int(0) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB CHAR.原创 2020-06-11 15:28:09 · 275 阅读 · 0 评论 -
[Mysql]Join
极客时间关于Joinstraight_join 让 MySQL 使用固定的连接方式执行查询,这样优化器只会按照我们指定的方式去 join嵌套查询类似,并且可以用上被驱动表的索引,所以我们称之为“Index Nested-Loop Join”,简称 NLJ。NLJ - 嵌套查询join都有索引扫描行数很少,T1表全表的行数 + T2表的有索引只走一行扫描。所以很少扫描次数。...原创 2020-04-24 15:27:40 · 161 阅读 · 0 评论 -
[Mysql]如果是MySQL引起的CPU消耗过大,你会如何优化?
作者:jiaxin_12来源https://www.cnblogs.com/YangJiaXin/p/10933458.html谁在消耗cpu?祸首是谁? 用户 IO等待 产生影响 如何减少CPU消耗? 减少等待 减少计算 升级cpu 罪魁祸首是谁?用户用户空间CPU消耗,各种逻辑运算正在进行大量...转载 2020-03-12 11:08:50 · 760 阅读 · 0 评论 -
[MySQL]order by是怎么工作的?
目录前言:1. 排序相关1.1 group by name(使用文件排序)1.2 全字段排序的简单过程解析(重点:用到了快排)1.3 在内存中排序还是硬盘中?(硬盘排序用到了归并排序)1.4 如果需要查询出来的字段很多,使用rowid排序2. 总结前言:涉及到排序相关知识。面试中可能要引导一下,排序相关内容还是需要熟悉一下的1. 排序相关1.1 ...原创 2019-12-24 20:27:14 · 526 阅读 · 0 评论 -
[MySQL]统计表的总行数,为什么尽量使用count(*)
前言:感谢mysql实战45讲,又学了很多~最为重要用count(*)最好1. count(*)实现方式?MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高(但是也是没有where条件的情况下);InnoDB 引擎就麻烦了,它执行 count(*) 的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数。怎么In...原创 2019-12-24 11:53:02 · 1421 阅读 · 0 评论 -
[MySQL]脏页
目录1. 脏页(内存页)2. 什么时候会引起flush?3. 影响3.1 如果是redo log写满了3.2 内存不够用了3.3 buffer pool4. Innodb 刷脏页的控制策略5. QAQ:怎么知道一个也是不是脏页?Q:LSN?Q:buffer pool?Q:刷写的答题过程?Q:很多测试人员再做压力测试的时候写入慢也跟redolo...原创 2019-12-23 17:39:15 · 2013 阅读 · 0 评论 -
[MySQL]Mysql自己怎么选取索引,怎么给字符串字段加上索引?(涉及到身份证怎么加索引)
目录前言:1. 实例分析1.1 如何创建循环函数1.2 进行查询操作2. 索引选择2.1 优化器2.2扫描行数是怎么判断的?2.3 Mysql怎么得到索引的基数的呢?2.4 选错索引的原因?2.4.1 怎么看预计扫描的行数?2.4.2 为什么选错了索引?2.4.3 如果表的统计数据不准确,使用analyze table t3. 选错索引,处理方...原创 2019-12-22 18:46:15 · 2438 阅读 · 0 评论 -
[MySQL]普通索引和唯一索引,MySQL到底是怎么选择索引的呢?
目录前言:1. 唯一索引和普通索引的区别2.唯一索引和普通索引查询过程的区别3.更新过程这两种索引的区别?涉及到change buffer4. change buffer的使用场景5. 总结6.QAQ: 是否使用唯一索引?Q:归档库?Q:系统表空间与数据表空间?Q:change buffer与加锁?Q: 上面提到的merge的行为?Q:chang...原创 2019-12-22 20:32:08 · 386 阅读 · 0 评论 -
[MySQL]表锁,全局锁,行锁。
目录前言:1. 初识1.1 锁的种类和目的1.2 全局锁1.2.1 全局锁的使用场景1.2.2 优点1.2.3 逻辑备份工具1.2.4 与set global readonly=true的区别?1.3 表级锁1.3.1 表锁语法1.3.2 表锁特点1.3.3 元数据锁MDL的特点1.3.4 MDL的优势1.3.5 MDL是系统默认会加上的!!...原创 2019-12-07 23:59:13 · 208 阅读 · 0 评论 -
[MySQL]覆盖索引,联合索引,索引下推优化,冗余索引,强制使用索引
目录1.什么是覆盖索引?2.什么是联合索引?2.1 联合索引的顺序要注意什么?3. 索引下推优化?总结:最左原则在like中也可以加速检索。Q: 这个问题蛮有意思的,在什么时候建立了联合索引(a,b)但是却需要单独建立一个冗余索引a呢?Q: 一个字段只有0/1怎么加快搜索?Q: 加入索引的缺点?Q:如果知道了a还是b那个查询其来块,那么使用强制索引。Q:...原创 2019-12-05 18:28:41 · 600 阅读 · 0 评论 -
[MySQL]索引的种类和索引的选取感悟
前言:数据库查询慢的时候,往往想到索引。索引一般问起来,会考虑他的数据结构的选用,以及B+树的特点~在mysql中,索引是在存储引擎中实现的。不同的引擎缩印的工作方式是不同的1.索引常见的数据结构常见的数据结构包括:哈希表,有序数组和搜索树。在navicate中以:hash和btree来呈现~1.1 索引如果选用hash以K V形式存储,解决冲突方式类似于HashM...原创 2019-12-03 20:04:46 · 183 阅读 · 0 评论 -
[MySQL]更新语句执行与redo log和bin log
前言:如果问起来,你是否清楚sql的更新过程呢?对于innodb,学习了它的更新过程。这个文章更像是我的个人学习笔记和感悟。下面进行简述。对于log和更新的详情,以后还可以更深入一点。1.更新的日志模块redo log(innoDB的log)因为sql的更新并不是立即更新,因为更新要找到对应哪条的数据项,很慢。而且每一条在执行的时候都要去找到去改,很繁琐。所以mysql都是...原创 2019-12-03 18:01:05 · 253 阅读 · 0 评论 -
[MySQL]sql语句的查询执行过程
目录前言:1.mysql的结构2. 长连接和短连接?2.1 长时间使用长连接会造成OOM,使内存涨得过快3.查询缓存(MYSQL8.0已经删除,所以只需要知道一下即可)3.1 尽量不适用查询缓存3.2 将查询缓存关闭4. 分析器5. 优化器6. 执行器7.总结前言:一般一个sql查询执行中,所经历的是连接-分析器-优化器(选择索引)-执行器 然...原创 2019-12-03 15:29:04 · 387 阅读 · 0 评论 -
[MySQL]插入更新on DUPLICATE key update
<insert id="insertUserTokenInfo"> INSERT INTO `user_auth` ( `name`, `token`, `c_date_time`) VALUES (#{userName},#{token},now()) on DUPLICATE key update `name` = #{userName};...原创 2019-12-03 14:00:14 · 149 阅读 · 0 评论 -
sql的学习(having,group by, sq的执行顺序,自定义group by)
1. having与sum的区别?having:对上面已经分组的数据进行过滤的条件 (对分组后的数据进行统计)2. group by all?3. group bygroup by的话 会把第一条遇到的数据,作为展示进行筛选出来。group by entity_id;把相同entity_id重复的合并常用的意义:4.聚合函数first?5. co...原创 2019-08-05 16:29:23 · 1028 阅读 · 0 评论 -
关于索引
1.什么是索引?索引是一种数据结构,能帮我们快速的检索数据库的数据2.索引采用那些数据结构呢?Mysql的结构有两种,Hash索引和B+ tree 索引我们使用的InnoDb引擎,所以默认使用的B+树3.关于数据库的引擎4.B+ 与B树什么区别5. B+与hash有什么区别简单回答:hash有hash表的特点,(注意一下hash表的数据结构和解决冲突的...转载 2019-08-02 15:12:47 · 182 阅读 · 0 评论