随笔分类 -  MySQL

摘要:OFFSET 和 LIMIT 对于数据量少的项目来说是没有问题的。但是,当数据库里的数据量超过服务器内存能够存储的能力,并且需要对所有数据进行分页,问题就会出现。为了实现分页,每次收到分页请求时,数据库都需要进行低效的全表扫描。好比为了获取一页的数据:10万行中的第5万行到第5万零20行 ,需要先获 阅读全文
posted @ 2023-03-17 14:25 JustJavaIt 阅读(234) 评论(0) 推荐(0) 编辑
摘要:介绍 排序的动作可能在内存中完成,内存放不下,则利用磁盘临时文件辅助排序。 Mysql有两种排序算法,全字段排序 和 rowid排序 (1)全字段排序简单的说就是把所有要查询的字段都放在sort_buffer中, 对sort_buffer中的数据进行排序; (2)rowid排序简单的说是把主键id和 阅读全文
posted @ 2023-01-14 15:45 JustJavaIt 阅读(49) 评论(0) 推荐(0) 编辑
摘要:编码格式知识 一、关于 UTF-8 UTF-8(Unicode Transformation Format-8bit)。是用以解决国际上字符的一种多字节编码。 它对英文使用 8 位(即一个字节) ,中文使用 24 位(三个字节)来编码。 UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性 阅读全文
posted @ 2022-02-03 10:36 JustJavaIt 阅读(3995) 评论(0) 推荐(0) 编辑
摘要:分区表的理论知识请查看我的另一篇博文,谢谢——分区-理论 需求说明 广告投放系统中监测链接表的数据以每天500w+的速度递增(用户每次点击广告生成),但是热点数据就10天左右,其余都是没用的历史数据。采用定时任务Delete的方式,只是做了逻辑上的标记删除,在磁盘上数据并没有被真正删除。同时通过De 阅读全文
posted @ 2021-09-05 21:40 JustJavaIt 阅读(484) 评论(0) 推荐(0) 编辑
摘要:对理论不感兴趣?那直接看分区实战吧--分区实战 目的 分区表的主要目的是方便数据的维护,而不是提升 MySQL 数据库的性能。 《高性能MySQL》中:分区的一个主要目的是将数据按照一个较粗的粒度分在不同的表中,这样做可以将相关的数据放在一起,另外,如果想一次批量删除整个分区的数据也会变得很方便。 阅读全文
posted @ 2021-09-05 21:14 JustJavaIt 阅读(827) 评论(0) 推荐(0) 编辑
摘要:MySQL的基本架构示意图 大体来说,MySQL可以分为Server层和存储引擎层两部分。 Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器 阅读全文
posted @ 2021-07-31 23:15 JustJavaIt 阅读(338) 评论(1) 推荐(0) 编辑
摘要:MySQL的基础架构 详细介绍请查看我的另一篇文账—— MySQL的基础架构 一条SQL查询语句是如何执行的? 查询语句:select * from T where ID=10; 1.客户端通过连接器连接服务器。 2.服务器先检查查询缓存,如果命中了缓存,直接返回缓存中的结果。否则进入下一个阶段。 阅读全文
posted @ 2021-07-31 22:46 JustJavaIt 阅读(453) 评论(0) 推荐(0) 编辑
摘要:redolog和binlog?作用? MySQL两个重要的日志模块。我们知道MySQL可以分成Server层和存储引擎层两部分,Server层主要做的是MySQL功能层面的事情,存储引擎层负责数据的存储和提取。 redo log(重做日志)是InnoDB引擎特有的,有了redo log,InnoDB 阅读全文
posted @ 2021-07-31 22:30 JustJavaIt 阅读(232) 评论(0) 推荐(0) 编辑
摘要:本章中我们主要理解以下几个问题: (1)基于主键索引和普通索引的查询有什么区别? (2)怎么理解回表? (3)怎么理解索引覆盖? 索引结构示例分析 在InnoDB中,表都是根据主键顺序以索引的形式存放的,这种存储方式的表称为索引组织表。 InnoDB使用了B+树索引模型,所以数据都是存储在B+树中的 阅读全文
posted @ 2021-06-08 23:21 JustJavaIt 阅读(883) 评论(0) 推荐(2) 编辑
摘要:索引的出现是为了提高查询效率,实现索引的方式(索引模型)有很多种。 每种数据结构都有其自身的优势和劣势,但它们存在的⽬的都是在不同的应⽤场景,尽可能高效增删改查。MySQL之所以用B+树作为索引,并不能说明B+树就是最好的数据结构,只能说是目前最合适的数据结构。 为什么不用哈希表、有序数组和搜索树这 阅读全文
posted @ 2021-05-24 23:17 JustJavaIt 阅读(787) 评论(0) 推荐(1) 编辑
摘要:在使用新架构WebFlux + R2DBC做拉取广告报表数据需求时,新建了表来保存拉取数据,因为字段有80多个,为了方便,就把第三方文档的字段直接作为表字段取建表,然后在调用spring原生Repository.save(实体)方法时报错,BadSqlGrammarException: execut 阅读全文
posted @ 2021-05-23 17:53 JustJavaIt 阅读(101) 评论(0) 推荐(0) 编辑
摘要:目前数据库存储一张表格主要是行存储(Row Storage)和列存储(Column Storage)两种存储方式。 行存储 行存储将表格看作一个个记录,每个记录是一行。以包含订单号、金额、下单时间 3 项的表为例,行存储如下图所示: 如上图所示,在计算机中没有真正的行的概念。行存储本质就是数据一个接 阅读全文
posted @ 2021-04-16 16:31 JustJavaIt 阅读(2446) 评论(0) 推荐(0) 编辑
摘要:当多条件查询的时候我们可以使用组合索引,查询效率会更高,因为当有多个单列索引时,MySQL只能用到其中那个它认为最有效率的单列索引。 最左前缀原则? 组合索引遵循最左前缀原则,这个最左前缀可以是联合索引的最左N个字段,也可以是字符串索引的最左M个字符。好比(a,b)组成的联合索引,只有当a和b的联合 阅读全文
posted @ 2021-04-08 14:29 JustJavaIt 阅读(504) 评论(0) 推荐(0) 编辑
摘要:通过以下学习你将能回答以下常见的面试题: (1)Mysql中chat和varchar的区别?varchar(255)和varchar(256)有什么区别?(朴朴科技) chat和varchar的区别? VARCHAR 和CHAR 是两种最主要的字符串类型。 VARCHAR VARCHAR 类型用于存 阅读全文
posted @ 2021-03-08 12:28 JustJavaIt 阅读(668) 评论(0) 推荐(0) 编辑
摘要:使用SQL中的UPDATE关键字更新多个字段值时,SET后面的更新字段应该使用逗号而不能用AND。虽然用AND不会报错,但会使更新结果错误,下面我将通过场景来分析当我们使用AND时SQL的执行过程和为什么更新结果只会是0/1/NULL; 场景示例 以下是场景更新前的原始查询数据如下: 更新场景1 更 阅读全文
posted @ 2021-01-24 22:42 JustJavaIt 阅读(1964) 评论(0) 推荐(0) 编辑
摘要:项目实战 用户登记激活码记录插入接口 数据库测试实例,其中手机号和父设备id为唯一索引 当我们使用普通的insert语句插入一条数据库中已存在的手机号和父设备id的数据时,会报重复的key的错 当我们使用带ignore的insert语句时插入同样的语句时,显示影响行数为0行,同时不报错,不插入表中。 阅读全文
posted @ 2020-09-01 21:19 JustJavaIt 阅读(1322) 评论(0) 推荐(0) 编辑
摘要:项目实战 一次错误的更新 更新前的数据 执行更新语句 然后我们查看下更新后的数据,发现居然数据为空? 使用主键id的方式查询这条数据,发现需要更新的手机号码居然变为了0 当我们把更新语句中的and去掉,逗号隔开两个需要更新的值后,再次执行语句时 查看数据后发现修改成功 分析说明 其实 UPDATE 阅读全文
posted @ 2020-07-25 23:29 JustJavaIt 阅读(128) 评论(0) 推荐(0) 编辑
摘要:发现错误 在做新需求时,建了新表,但是在测试debug中,控制台报了java.sql.SQLException: Zero date value prohibited错误 数据库用的是Date类型 实体类用的是LocalDate 分析原因 MySQL数据库在面对0000-00-00 00:00:00 阅读全文
posted @ 2020-07-08 11:33 JustJavaIt 阅读(16751) 评论(0) 推荐(0) 编辑
摘要:需求说明 产品需要统计一段时间范围内每月用户的注册人数(根据用户信息表中的创建时间),需要我通过SQL导出数据,但是数据量太大,导出需要20多秒,于是我尝试在创建时间字段中加索引,但是发现加了索引后索引失效了,通过limit限制数量后索引才生效。 实战操作 无索引时查询的时间26秒多和记录数量为10 阅读全文
posted @ 2020-06-20 16:40 JustJavaIt 阅读(7620) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示