数据库
文章平均质量分 52
数据库的相关
PayCat
这个作者很懒,什么都没留下…
展开
-
「性能优化专题」缓存的那些事儿
利用缓存做性能优化的案例非常多,从基础的操作系统到数据库、分布式缓存、本地缓存等。它们表现形式各异,却有着共同的朴素的本质:弥补CPU的高算力和IO的慢读写之间巨大的鸿沟。和架构选型类似,每引入一个组件,都会导致复杂度的上升。以缓存为例,它带来性能提升的同时,也带来一些问题,需要开发者设计和权衡。本文的思维脉络如下:一 缓存和多级缓存1 缓存的引入在初期业务量小的时候,数据库能承担读写压力,应用可以直接和DB交互,架构简单且强壮。经过一...原创 2022-01-14 13:31:20 · 191 阅读 · 0 评论 -
「数据库专题」一分钟搞懂MySql索引下推
如果你在面试中遇到,听到“MySQL5.6”、“索引优化” 之类的词语,你就要立马get到,这个问的是“索引下推”。什么是索引下推索引下推(Index Condition Pushdown,简称ICP),是MySQL5.6版本的新特性,它能减少回表查询次数,提高查询效率。索引下推优化的原理我们先简单了解一下MySQL大概的架构:MySQL大概架构MySQL服务层负责SQL语法解析、生成执行计划等,并调用存储引擎层去执行数据的存储和检索。索引下推的下推其实就是指将部分上层(服务转载 2022-01-06 10:45:53 · 324 阅读 · 2 评论 -
MySQL主键索引与非主键索引 索引下推
主键索引和普通索引的区别1.主键索引索引着数据,然而普通索引索引着主键ID值(这是在innodb中,但是如果是myisam中,主键索引和普通索引是没有区别的都是直接索引着数据) 2.当你查询用的是where id=x 时,那只需要扫描一遍主键索引,然后拿到相应数据,但是如果是查询的普通索引的话,那么会先扫描一次普通索引,拿到主键值,然后再去扫主键索引,拿到所需要的数据,这个过程叫做回表B+ Tree的叶子节点都可以存哪些东西?在 InnoDB 里,索引B+ Tree的叶子节点存储了整行数原创 2021-08-18 09:09:33 · 276 阅读 · 0 评论 -
简述在MySQL 数据库中 MyISAM 和InnoDB 的区别
MyISAM:不支持事务, 但是每次查询都是原子的; 支持表级锁, 即每次操作是对整个表加锁; 一个 MYISAM 表有三个文件: 索引文件、表结构文件、数据文件; 采用菲聚集索引, 索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致, 但是辅索引不用保证唯一性。InnoDb:支持 ACID 的事务, 支持事务的四种隔离级别; 支持行级锁及外键约束: 因此可以支持写并发; 不存储总行数 一个 InnoDb 引擎存储在一个文件空间( 共享表空间, 表大小不受操作系统控制...原创 2021-08-16 14:45:29 · 356 阅读 · 0 评论 -
innodb是如何实现事物的
innodb 通过buffer pool, logBuffer, Redo Log, Undo Log 来实现事务的, 以update语句举例:innodb 在收到一个update语句后, 会先根据条件找到数据所在的页, 并将该页缓存在buffer pool中 执行update语句, 修改buffer pool中的数据, 即内存中的数据 针对update语句生成一个redoLog对象, 并存入LogBuffer中 针对update语句生成undo Log日志, 用于事务回滚 如果事务提交, 那.原创 2021-08-16 12:36:59 · 775 阅读 · 0 评论 -
MYSQL ACID以及事务隔离级别详情
mysql四种事务隔离级别读未提交 读已提交 可重复读 ( 默认 ) 串行化查看事务隔离级别命令 show variables like 'tx_isolation';读未提交 READ UNCOMMITTEDSET TRANSACTION ISOLATION LEVEL READ UMCOMMITED;事务A可以读取事务B未提交的事务,会出现脏读。读已提交 READ COMMITTEDSET TRANSACTION ISO...原创 2021-08-05 15:27:44 · 99 阅读 · 0 评论 -
Java关于统计分组 某时间段数据不存在的情况 解决方案
举栗子: 查询出30天前的数据, 按每天分组, 分成30份, 问题来了: 如果其中某天没有数据, 分组时, 这个时间段就没有数据.解决方案先用java 查出要查的数据, 通过mysql的union all 然后分组求和即可.实例 查询出30天的数据, 以天为单位分组结果还有更好的解决方案嘛...原创 2021-06-15 19:44:42 · 576 阅读 · 0 评论 -
mysql 以小时 分钟 为单位分组 30分钟 4小时
以几分钟中分段SELECT *, DATE_FORMAT( concat(date(create_time), ' ', HOUR (create_time), ':', floor(MINUTE (create_time) / ${minute} ) * ${minute}), '%Y-%m-%d %H:%i' ) AS time FROM t_soc_service_invoke以几小时分段SELECT *,DA..原创 2021-06-10 08:59:43 · 652 阅读 · 0 评论 -
mysql ON DUPLICATE KEY UPDATE
mysql中该关键字的含义是:插入数据时,若数据库中存在则更新数据,否则插入。前提是:表中要有唯一索引。比如根据name判断。就要给name设置唯一索引unique使用方法举例子新插入一条数据。name 为 dugt会执行更新操作...原创 2021-06-02 09:27:21 · 169 阅读 · 0 评论 -
mybatis 之 BaseTypeHandler
BaseTypeHandler 是个抽象类,需要子类去实现其定义的 4 个抽象方法,而它本身实现了 typeHandler 接口的 4 个方法。可以对数据保存与查询时做出相应处理,类似操作数据库之间的一个拦截器举栗子:把集合类型当string存起来,读取的时候映射为list集合首先自定义handler 继承BaseTypeHandler重写他里边的四个方法public abstract void setNonNullParameter(PreparedStatement var1, ..原创 2021-05-26 16:16:46 · 10520 阅读 · 3 评论 -
mysql 剔除每组重复数据 选出最新的一条
实例解决思路 通过user_id 分组 取出每组最大的id(时间自动创建 id最大即时间最新)原创 2021-05-19 13:34:45 · 315 阅读 · 0 评论 -
mysql中 case when then end的用法
含义我理解的case when then end 等价于java 中的if else举栗学生表 id, name, sex, grade离校学生表 id, stu_id需求成绩 男生大于70 女生大于 60的学生select * from student where grade > (case when sex = 0 then 60 when sex = 1 then 70 end)查看全部学生离校情况select * from (...原创 2021-04-17 09:49:54 · 299 阅读 · 0 评论 -
Java 保证接口的幂等性 接口唯一性 避免重复提交
举栗子:当网络延迟的情况下,用户多次点击,多条数据插入到数据库,或者造成数据的不一致性,如提交订单,扣钱等。简述一下前端解决思考 :按钮只让用户点击一次,重定向至友好页面,避免多次点击,此文主要介绍我的一些Java解决的思路及方法。直接上我所能想到的解决方法,就拿我所属的电商行业举例乐观锁机制用户下订单,下订单,就会走保存订单的接口,此时,就根据用户的id去查它积分的version的值,如1 支付时,带着version的值去更新,版本号匹配则更新,版本号不匹配则不更新,上代码 sele原创 2021-03-19 20:49:33 · 2513 阅读 · 3 评论 -
Mysql优化 索引优化 优化技术
Mysql数据库的优化技术分析SqlSql优化什么情况下避免使用索引Mysql数据库的优化技术表的设计合理化(符合3NF) 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引] 分表技术(水平分割、垂直分割) 读写[写: update/delete/add]分离 存储过程 [模块化编程,可以提高速度] 对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ] mysql服务器硬件升级...原创 2021-03-02 14:32:20 · 323 阅读 · 0 评论 -
MySQL各种锁详情
前言我们知道,数据也是一种供许多用户共享访问的资源。如何保证数据并发访问的一致性、有效性,是所有数据库必须解决的一个问题,锁的冲突也是影响数据库并发访问性能的一个重要因素。从这一角度来说,锁对于数据库而言就显得尤为重要。本文将带领大家一起深入领略Mysql锁的各种风采。表锁表级锁是mysql锁中粒度最大的一种锁,表示当前的操作对整张表加锁,资源开销比行锁少,不会出现死锁的情况,但是发生锁冲突的概率很大。该锁定机制最大的特点是实现逻辑非常简单,带来的系统负面影响最小。所以获取锁和释原创 2020-12-24 18:08:57 · 295 阅读 · 1 评论 -
mysql常用函数,mysql进阶
数学函数abs(x) 返回x的绝对值 bin(x) 返回x的二进制(oct返回八进制,hex返回十六进制) ceiling(x) 返回大于x的最小整数值,取顶 exp(x) 返回值e(自然对数的底)的x次方 floor(x) 返回小于x的最大整数值,取底 greatest(x1,x2,...,xn) 返回集合中最大的值 least(x1,x2,...,xn) 返回集合中最小的值 ln(x) 返回x的自然对数 log(x,y)原创 2020-12-06 10:48:51 · 211 阅读 · 0 评论 -
什么是触发器?mysql 触发器如何设置
概念当对某一表进行诸如UPDATE、 INSERT、 DELETE 这些操作时,mysql 就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。例:一张部门表dep 员工表em 更改dep的id时,同时修改em所对应的dep_iddpe表id字段创建触发器,...原创 2020-12-06 10:24:26 · 389 阅读 · 0 评论 -
windows下设置redis开机自启动
首先确保redis安装成功!Redis 3.0.5地址链接:https://pan.baidu.com/s/1nQDFbBubKutayfYbPbjj0A提取码:q09w复制这段内容后打开百度网盘手机App,操作更方便哦解压文件夹,至 redis目录下,路径点击输入cmd,打开黑窗口,输入以下命令,将redis添加至服务里redis-server --service-install redis.windows-service.conf --loglevel verbose..原创 2020-11-26 09:41:19 · 498 阅读 · 0 评论 -
mysql获取当天,昨天,本周,本月,上周,上月的起始时间
-- 今天select DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00') AS '今天开始';select DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') AS '今天结束';-- 昨天select DATE_FORMAT( DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d 00:00:00') AS '昨天开始';select DATE_FORMAT( DATE_SUB(CURDATE(),.原创 2020-11-07 16:45:13 · 912 阅读 · 0 评论 -
mysql range 分区后 添加分区时 1481 - MAXVALUE can only be used in last partition definition
1481 - MAXVALUE can only be used in last partition definitionMAXVALUE只能在最后一个分区定义中使用,表示新添加的分区不能在maxvalue之后,解决办法: 分区时不要添加maxValue create table tb_users( uuid int not null, customerId varchar(20), password varchar(20), showName varchar原创 2020-11-03 10:14:03 · 2807 阅读 · 0 评论