
数据库
文章平均质量分 87
yue_hu
成长源于积累
展开
-
【小笔记】MyBaits的Cursor
流式查询 指的是查询成功后不是返回一个集合而是返回一个迭代器,应用可以通过迭代器每次取一条查询结果。流式查询的好处是能够降低内存使用。例如我们想要从数据库取 1000 万条记录而又没有足够的内存时,就不得不分页查询。而分页查询就需要我们按照顺序查询并设置一个参数来记录当前进度并在下次查询时将进度作为参数传入(比如按id升序查询,记录每次查询结果的最大id, 下次查询将这个最大id传入只查询大于这个id的),否则就会出现深度分页的情况。原创 2023-11-07 16:16:06 · 907 阅读 · 0 评论 -
【JAVA核心知识】深度了解MySql的InnoDB引擎
了解了页分裂,页合并也就更好理解的,当删除一行数据时,实际上记录并没有被物理删除,而是仅仅打上一个标记声明可以被其他记录使用,当页中剩余的记录不足MERGE_THRESHOLD(默认为页体积的50%)时,InnoDB会探查这个页前面或者后面的页是否有足够的空间,如果有,就会把这个页的数据迁移过去,完成页合并,这个动作同样相当耗费资源。构建共分为三个阶段。一条数据执行时,如果是读操作,要查找的数据所在的数据页在内存中时,则将结果返回,否则会先将其所在的数据页加载到内存中,然后再返回结果。数据页默认16KB。原创 2023-10-24 16:24:27 · 387 阅读 · 0 评论 -
DB2错误码表格
DB2错误码速查原创 2022-07-03 11:40:30 · 1273 阅读 · 0 评论 -
使用profile进一步分析SQL资源消耗
使用EXPLAN仅仅可以获得SQL的执行策略,如果需要进一步探查SQL的执行情况,则需要使用profile来完成了。要想使用profile,第一件事是先打开profile的采集开关, profile默认关闭,可以通过SQL:set profiling=1;来打开,这个开关是连接的级别的,也就是说如果你重新建立连接,那么需要再次执行此SQL打开采集,然后再执行自己要检测的SQL,执行完毕后使用SQL:show profiles;查看最近15条执行记录,这个条目数可以通过设置profiling_原创 2021-12-29 16:09:36 · 1099 阅读 · 0 评论 -
【小笔记】临时表:删除无主键表中的重复记录,只保留一条记录
整体思路是先找出重复的记录放入临时表中,然后删除原表中的重复数据,再将临时表中的数据插入进去找出重复的放入临时表:create table tmp_table as (select name,age,sex, count(1) as cn from ori_table group by name, age,sex having cn > 1);删除原表重复的:delete ori_table from ori_table inner join tmp_table using (name,a原创 2021-12-22 10:26:14 · 1225 阅读 · 0 评论 -
一次关于InnoDB在UPDATE时对聚簇索引及二级索引加锁情况的试验
先上结论:在REPEATABLE_READ和READ_COMMITTED两个级别下,无论是对二级索引加锁还是对聚簇索引加锁,只有实际发生冲突时InnoDB才会在发生冲突的索引上实际进行加锁,未发生冲突的索引会使用MVCC进行并发控制,而不是直接加锁。在REPEATABLE_READ和READ_COMMITTED两个级别下,通过二级索引进行更新时,会先对二级索引加锁,然后对聚簇索引加锁。在REPEATABLE_READ和READ_COMMITTED两个级别下,使用聚簇索引更新二级索引时,会先对聚簇加锁原创 2021-12-11 21:51:29 · 2205 阅读 · 7 评论 -
【JAVA核心知识】33:MySQL EXPLAIN的使用 ---《高性能MySQL》读书笔记
EXPLAIN用来获取关于SQL的执行计划信息。MySQL 5.6之前能进对SELECT语句进行解释,MySQL 5.6开始能对UPDATE,INSERT,DELETE进行解释。EXPLAIN具有局限性,并不总会说出真相,但已经是可以获取的最好信息。要使用EXPLAIN,只需要在SQL之前增加EXPLAIN这个关键词。他会返回一行或多行信息,显示执行计划中的每一部分和执行次序。一个常见的错误是:增加EXPLAIN时SQL不会实际执行。有时间我们用这个特性来快速获得要求不是那么精确的行数信息。然而这个结论原创 2021-11-18 15:57:06 · 604 阅读 · 0 评论 -
【JAVA核心知识】32:查询性能优化 ---《高性能MySQL》读书笔记
查询性能优化优化数据访问是否向数据库请求了不需要的数据是否在扫描额外的记录重构查询的方式查询的过程通信协议查询缓存查询优化处理查询优化器的限制关联子查询UNION的行数限制并行执行禁止同一个表上的查询和更新优化特定类型的查询(技巧篇!最重要的章节!)优化COUNT()查询优化关联查询优化子查询优化LIMIT及分页使用UNION ALL而不是 UNION优化数据访问是否向数据库请求了不需要的数据查询了不需要的行总是取出所有的列多表关联时返回了全部列重复查询相同的数据是否在扫描额外的记录扫原创 2021-11-16 15:25:33 · 1419 阅读 · 0 评论 -
【JAVA核心知识】31:创建高性能的索引 ---《高性能MySQL》读书笔记
索引索引的类型B-Tree(B+Tree)索引hash索引其他索引索引的优点如何建立高性能的索引索引是存储引擎用于快速找到记录的一种数据结构。通过索引找到对应的数据行。好的索引对良好的性能非常关键,索引优化应该是查询性能优化最有效的手段了。不好的索引会严重影响性能,即使是正提升的索引,‘’最优‘’和‘’好的‘’的索引带来的提升也可能不是一个数量级别。数据量越大,索引越重要。避免使用ORM工具产生索引,索引是一个十分复杂的东西,再复杂的ORM工作,在精妙和复杂的索引面前都是浮云。事实上我个人认为ORM工原创 2021-11-03 15:30:10 · 1427 阅读 · 0 评论 -
【JAVA核心知识】30:MySQL数据类型选择与设计 ---《高性能MySQL》读书笔记
MySQL数据类型优化与设计1 MySQL的基本数据类型1.1 整数(whole number)类型1.2 实数(real number)类型1.3 字符串类型1.3.1 VARCHAR和CAHR类型1.3.2 BLOB和TEXT类型1.3.3 使用枚举(ENUM代替字符串类型)1.4 日期和时间类型1.5 位数据类型2 如何选择与设计1 MySQL的基本数据类型首先了解一下MySQL的基本数据类型,要注意的是MySQL为了兼容性,所以支持很多别名,如INTEGER, BOOL以及NUMERIC,这些别原创 2021-10-21 15:46:30 · 433 阅读 · 0 评论 -
【JAVA核心知识】29:MySQL架构基础篇 ---《高性能MySQL》读书笔记
MySQL逻辑架构图片来源:《高性能MySQL》第一层做一下安全认证,授权处理之类的,大多数C/S工具都会有这样的结构。第二层是大多数MySQL核心功能的所在,包括查询解析,分析,优化,以及所有的内置函数(例如日期,时间,加密函数),所有的跨存储引擎的功能也都在这一层实现(例如存储过程,触发器,视图)第三层是存储引擎层,mysql有不同的存储引擎,服务器通过API和存储引擎通信,这样就屏蔽了不同存储引擎之间的差异。存储因此API包含几十个底层函数,用于执行诸如‘开始一个事务’或者‘根据主键提取一行原创 2021-10-21 15:45:10 · 1744 阅读 · 0 评论 -
DB2中的小数类型
DECIMAL:DB2中的DECIMAL支持的最长长度为31位,小数点也会包含进去算为一个长度,也就是说这个数据类型最多存储31位的纯整数或者整数位和小数位的长度之和和为30的小数(小数点占据一位)EXAMPLE:DECIMAL(31),DECIMAL(31,0)合法 DECIMAL(30,29)合法 DECIMAL(31,29)不合法 DECIMAL(M,N) 中M原创 2017-12-28 16:19:37 · 9301 阅读 · 2 评论 -
数据库中聚集索引和非聚集索引
聚集索引:类似字典的拼音目录。表中的数据按照聚集索引的规则来存储的。就像新华字典。整本字典是按照A-Z的顺序来排列。这也是一个表只能有一个聚集索引的原因。因为这个特点,具体索引应该建在那些经常需要order by,group by,按范围取值的列上。因为数据本身就是按照聚集索引的顺序存储的。不应该建在需要频繁修改的列上,因为聚集索引的每次改动都以为这表中数据的物理数据的一次重新排序。就想新华字典一...原创 2018-06-09 17:17:08 · 12349 阅读 · 4 评论 -
dynamicMerge与Merge
dynamicMerge:动态更新,更新对象里的非空字段Merge:更新,更新对象里的所有字段例:对象A字段为null,数据库A字段有值。执行dynamicMerge不会更新数据库中的A字段,执行Merge会将数据库中的A字段更新为nullhibernate中dynamicMerge属性默认为false,即默认为Merge MERGE的使用: MERGE INTO ...原创 2017-12-20 10:11:59 · 812 阅读 · 0 评论