数据库
文章平均质量分 75
这是关于数据库的代码
耶瞳
这个作者很懒,什么都没留下…
展开
-
数据库MVCC详解
MVCC指的就是在使用RC、RR这两种隔离级别的事务在执行普通的SELECT操作时访问记录的版本链的过程,这样可以使不同事务的读-写、写-写操作并发执行,从而提升系统性能。转载 2022-11-11 12:42:51 · 437 阅读 · 0 评论 -
delete,truncate,drop区别
今天面试遇到的,不会,感觉很尴尬,就记一下。原创 2022-11-10 23:06:23 · 140 阅读 · 0 评论 -
Redis大key问题
大key有什么影响:我们都知道,redis的一个典型特征就是:核心工作线程是单线程。单线程中请求任务的处理是串行的,前面完不成,后面处理不了。大key是如何产生的:大key的产生往往是业务方设计不合理,没有预见value的动态增长问题。所谓的大key问题是某个key的value比较大,所以本质上是大value问题。转载 2022-11-10 10:13:39 · 256 阅读 · 0 评论 -
数据库八股系列——MySQL
例如a = 1 and b = 2 a,b字段都可以使用索引,因为在a值确定的情况下b是相对有序的,而a>1and b=2,a字段可以匹配上索引,但b值不可以,因为a的值是一个范围,在这个范围中b是无序的。可以看到a的值是有顺序的,1,1,2,2,3,3,而b的值是没有顺序的1,2,1,4,1,2。大家知道,MySQL 中的索引有很多中不同的分类方式,可以按照数据结构分,可以按照逻辑角度分,也可以按照物理存储分,其中,按照物理存储方式,可以分为聚簇索引和非聚簇索引。原创 2022-11-02 19:30:25 · 304 阅读 · 0 评论 -
mysql 随机查询_MySQL 实现随机查询
方法一不建议使用,效率非常低,官方文档中进行说明:Order By和RAND()连用,会多次扫描表,导致速度变慢。转载 2022-08-25 23:59:49 · 4992 阅读 · 1 评论 -
MySQL大表优化
当MySQL单表记录数过大时,数据库的CRUD性能会明显下降,一些常见的优化措施如下单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段:尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNEDVARCHAR的长度原创 2022-05-22 15:57:40 · 1244 阅读 · 0 评论 -
count(*)、count(1)还是count(column)?
面试经常会问一个问题,就是以下三种方式哪个更快:select count(*) from table_name;select count(1) from table_name;select count(column_name) from table_name;首先要了解它们之间的区别,count(*)和count(1)计算所有数据中包括NULL值的行数,而count(column_name)计算指定列的行数,但是不包括NULL值既然count(*)和count(1)功能一样,那哪个更快呢,其实这原创 2022-05-22 15:18:49 · 281 阅读 · 0 评论 -
redis缓存预热、缓存更新与缓存降级
缓存预热缓存预热就是系统上线后,将相关的缓存数据直接加载到缓存系统。这样就可以避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题,用户直接查询事先被预热的缓存数据。实现思路:直接写个缓存刷新页面,上线时手工操作下;数据量不大,可以在项目启动的时候自动进行加载;定时刷新缓存;缓存更新除了缓存服务器自带的缓存失效策略之外(Redis默认的有6中策略可供选择),我们还可以根据具体的业务需求进行自定义的缓存淘汰,常见的策略有两种:定时去清理过期的缓存;当有用户请求过来时,再判断这个请原创 2022-05-21 18:26:12 · 1680 阅读 · 0 评论 -
redis数据结构之RedisObject详解
Redis中的任意数据类型的键和值都会被封装为一个RedisObject,也叫做Redis对象原创 2022-05-20 23:34:11 · 617 阅读 · 0 评论 -
redis数据结构之Dict
我们知道Redis是一个键值型(Key-Value Pair)的数据库,我们可以根据键实现快速的增删改查。而键与值的映射关系正是通过Dict来实现的。Dict由三部分组成,分别是:哈希表(DictHashTable)、哈希节点(DictEntry)、字典(Dict)。哈希表和哈希节点对应的结构体如下:/* This is our hash table structure. Every dictionary has two of this as we * implement incremental re原创 2022-05-20 18:10:47 · 168 阅读 · 0 评论 -
redis数据结构之IntSet介绍以及源码分析
IntSet是Redis中set集合的一种实现方式,基于整数数组来实现,并且具备长度可变、有序等特征。结构如下:typedef struct intset { uint32_t encoding; /* 编码方式,支持存放16位、32位、64位整数 */ uint32_t length; /* 元素个数 */ int8_t contents[]; /* 整数数组,保存集合数据 */} intset;其中encoding包含三种模式,表示存储的整数大小不同:/* Not原创 2022-05-20 17:53:51 · 866 阅读 · 0 评论 -
数据库面试题——说出十个redis常用场景
一:缓存由于redis访问速度块、支持的数据类型比较丰富,所以redis很适合用来存储热点数据,另外结合expire,我们可以设置过期时间然后再进行缓存更新操作,这个功能最为常见,我们几乎所有的项目都有所运用。二:分布式锁这个主要利用redis的setnx命令进行,setnx:"set if not exists"就是如果不存在则成功设置缓存同时返回1,否则返回0 。因为我们服务器是集群的,定时任务可能在两台机器上都会运行,所以在定时任务中首先 通过setnx设置一个lock,如果成功设置则执行,如果原创 2022-05-20 15:11:33 · 431 阅读 · 0 评论 -
redis数据结构之动态字符串(SDS)
我们都知道Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。原创 2022-05-20 13:58:17 · 502 阅读 · 0 评论 -
redis哨兵机制
Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。哨兵的结构和作用如下:监控: Sentinel会不断检查您的master和slave是否按预期工作自动故障恢复∶如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新的master为主通知: Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端服务状态监控:Sentinel基于心跳机制监测服务状态,每隔1秒向集群的每个实原创 2022-05-20 00:00:16 · 364 阅读 · 0 评论 -
Redis主从架构之全量同步原理与增量同步原理
单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。原创 2022-05-19 23:21:44 · 1756 阅读 · 2 评论 -
redis持久化详解
RDB演示RDB全称Redis Database Backup file (Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。执行命令为save,需要注意的是,该命令由redis主进程执行,执行期间会阻塞所有命令,适合在redis停机的时候使用ubuntu_docker:0>save"OK"ubuntu_docker:0>因此原创 2022-05-19 16:27:03 · 291 阅读 · 1 评论 -
数据库面试题——redis缓存主动更新策略(延时双删)
这篇博客主要讲主动更新,主动更新策略有三种:Cache Aside Pattern:由缓存的调用者在更新数据库的同时更新缓存,这种方法需编程实现,业务比较复杂Read/Write Through Pattern:缓存与数据库整合为一个服务,由服务来维护一致性。调用者调用该服务,无需关心缓存一致性问题。这个方法最大的问题就是维护这样一个服务比较复杂,当前市面上没有完善的解决方案Write Behind Caching Pattern:调用者只操作缓存,由其它线程异步的将缓存数据持久化到数据库原创 2022-05-19 14:23:56 · 1351 阅读 · 0 评论 -
redis序列化原理与工具封装
使用redisTemplate的时候,如果不做任何序列化配置,那么就会出现以下这种情况原创 2022-05-19 12:44:36 · 486 阅读 · 0 评论 -
数据库面试题——redis缓存穿透、缓存击穿与缓存雪崩
缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。原创 2022-05-19 12:05:15 · 212 阅读 · 0 评论 -
数据库面试题——redis中key没有设置过期时间但被redis主动删除(8种内存淘汰策略)
当Redis已用内存超过maxmemory限定时,触发主动清理策略。主动清理策略在Redis 4.0之前一共实现了6种内存淘汰策略,在4.0之后,又增加了2种策略,总共8种原创 2022-05-18 20:11:08 · 2060 阅读 · 0 评论 -
数据库面试题——redis中key过期了但内存没有释放
在使用Redis时,肯定经常使用SET命令,SET除了可以设置key-value之外,还可以设置key的过期时间,此时如果想修改key的值,但只是单纯地使用SET命令,而没有加上过期时间的参数,那这个key 的过期时间将会被擦除原创 2022-05-18 19:56:03 · 559 阅读 · 0 评论 -
MySQL锁机制
锁是计算机协调多个进程或线程并发访问某一资源的机制数据库锁定机制简单的来说,就是数据库为了保证数据的一致性与完整性,而使各种共享资源在被并发访问时变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁机制,所以MySQL也不能例外。MySQL数据库根据锁锁定数据的颗粒度可分为表级锁、行级锁和页级锁。原创 2022-05-18 13:55:54 · 130 阅读 · 0 评论 -
数据库面试题——redis线程问题
redis为什么这么快,为什么选择单线程,为什么选择多线程,多线程会有安全问题吗原创 2022-05-18 13:13:33 · 286 阅读 · 0 评论 -
数据库面试题——ACID靠什么来保证
原子性是由undo log日志保证的,它记录了需要回滚的日志信息,也就是说我们的事务还没提交需要回滚,那么事务回滚就是根据undo log日志来撤销已经执行成功的SQL。说白了,undo log其实就是SQL的反向执行,它记录了反向执行的SQL语句,把正向语句回滚回去原创 2022-05-17 22:22:59 · 923 阅读 · 0 评论 -
SQL索引与explain关键字
MySQL官方对索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构。由此我们可以得到索引的本质:索引是数据结构。可以简单理解为“排好序的快速查找数据结构”。原创 2022-03-10 21:47:43 · 724 阅读 · 0 评论 -
本机连接虚拟机Mysql
首先ping一下虚拟机ip,如果ping的通就说明可以正常连接虚拟机,ping不通可以检查是否虚拟机联网。然后xshell运行下面指令查看虚拟机防火墙情况:systemctl status iptables如果报错Unit iptables.service could not be found.,则需要先安装防火墙:yum install iptables-services然后启动防火墙:systemctl enable iptablessystemctl start iptables原创 2022-01-12 10:13:30 · 2473 阅读 · 1 评论 -
redis与mongodb比较
项目 Redis MongoDB 介绍 Redis 是内存中的数据结构存储,用作数据库,缓存和消息代理。 MongoDB 是遵循文档存储结构的最流行的 NoSQL 数据库之一。 ...原创 2021-12-12 17:45:07 · 5126 阅读 · 0 评论 -
redis的介绍与安装
一:redis介绍当程序遇到海量用户,出现高并发时,关系型数据库会遇到两个瓶颈:性能瓶颈:磁盘IO性能低下扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群瓶颈的解决思路如下:降低磁盘IO次数,越低越好 ———— 即使用内存存储去除数据间的关系,越简单越好 ———— 即不存储关系,仅存储数据以上两点解决方案便催生了一种新的数据库类型:Nosql(not only sql),即非关系型数据库。nosql可以作为关系型数据库的补充。作用是应对基于海量用户和海量数据前提下的数据处理问原创 2021-10-21 14:57:02 · 144 阅读 · 0 评论 -
sql之约束、事务与视图
六大约束 NOT NULL:非空约束,用于保证该字段的值不能为空 DEFAULT:默认约束,用于保证该字段有默认值 PRIMARY KEY:主键约束,用于保证该字段唯一且非空 UNIQUE:唯一约束,用于保证该字段具有唯一性,但可以为空 CHECK:检查约束(mysql中不支持,如果写了也不会报错) FOREIGN KEY:外键约束,用于限制两个表的关系,保证该字段的值必须来自于主表关联列的值原创 2021-09-28 19:43:03 · 372 阅读 · 0 评论 -
MySQL存储引擎
存储引擎其实就是对于数据库文件的一种存取机制,如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。MySQL中的数据用各种不同的技术存储在文件(或内存)中,这些技术中的每一种技术都使用不同的存储机制,索引技巧,锁定水平并且最终提供广泛的不同功能和能力。在MySQL中将这些不同的技术及配套的相关功能称为存储引擎原创 2021-09-27 20:29:35 · 131 阅读 · 0 评论 -
sql语法练习
这不算一篇博客吧。。。。只是突然发现草稿箱里还有这个,这是很早以前的了,就把以前的练习代码发一下,也算是存个笔记吧。。。。使用的库和表的下载地址:尚硅谷MySQL,如果有兴趣了解更多相关知识的话,可以来我的个人网站看看:eyes++的个人空间代码如下:-- 创建数据库CREATE DATABASE demo;CREATE DATABASE IF NOT EXISTS demo;-- 修改库的字符集ALTER DATABASE demo CHARACTER SET utf8;-- 库的删除原创 2021-09-09 14:54:27 · 318 阅读 · 0 评论 -
MySQL基础命令汇总
零:SQL简介SQL 是什么?SQL 指结构化查询语言,全称是 Structured Query Language。SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。SQL 在1986年成为 ANSI的一项标准,在 1987 年成为国际标准化组织(ISO)标准。SQL 能做什么?SQL 面向数据库执行查询SQL 可从数据库取回数据SQL 可在数据库中插入新的记录SQL 可更新数据库中的数据SQL 可从数据库删除记录SQL 可创建新数据库SQL 可原创 2021-07-23 16:11:31 · 2845 阅读 · 2 评论