数据库
文章平均质量分 72
不务正业的攻城狮
这个作者很懒,什么都没留下…
展开
-
mongodb入门(五)
前言本机内容是关于 mongodb 学习的最后一节,经过前面4小节的学习,我相信里面的内容已经可以处理工作中 90%(保守估计) 的场景了,这节我们来了解一些 mongodb 优化的问题。索引我们知道,适合的索引对 mysql 数据查询效率的提升有非常大的作用,mongodb 也一样。1.1 查看集合的索引语法:db.集合.getIndexes();db.user.getIndexes();可以看到默认情况下,一个集合只有一个索引,字段是 _id。1.2 新建索引语法:db.use原创 2022-09-05 09:08:10 · 98 阅读 · 0 评论 -
mysql高可用方案--切换分区
首先声明一下,我这边说的mysql高可用不是指的mysql集群架构的高可用,而是针对我所面临的特定场景 ---- 表切换的高可用的实现方案。说说需求的来源,前段时间,由于项目需要做个一个数据模型中台,其主要作用是通过读取大数据给到的数据文件到mysql库,同时提供查询数据api接口的功能。所有功能基本都实现完成了,但是在后期测试的时候发现一个问题,在数据api接口的查询过程中,少数请求五法正常返回数据。后来通过排查定位到问题,发现是由于同步数据任务完成时修改表明造成的一瞬间原表不存在的原因造成。首先提一原创 2021-11-18 17:50:19 · 597 阅读 · 0 评论 -
msql8以前利用sql实现开窗函数效果
开窗函数用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列。----- 摘自百度百科说实话,这段话对没接触过的人来说很难理解,有兴趣的可以去了解下百度百科的全面介绍(开窗函数)。今天,我们直接按照例子来说一说他能实现的功能,废话少说,开搞!目前我使用的环境是mysql 5.7.18,可以通过以下命令查看自己的mysql版本SELECT VERSION();首先,准备测试数据:原创 2021-10-09 16:41:29 · 278 阅读 · 0 评论 -
ORACLE中TO_DATE()函数的使用
日期格式参数 含义说明D 一周中的星期几 DAY 天的名字,使用空格填充到9个字符 DD 月中的第几天 DDD 年中的第几天 DY 天的简写名 IW ISO标准的年中的第几周 IYYY ISO标准的四位年份 YYYY 四位年份 YYY,YY,Y 年份的最后三位,两位,一位 HH 小时,按12小时计 HH24 小时,按24小时计 MI 分 SS 秒 MM 月 Mon 月份的简写 Month 月份的全名 W 该月的第几个星期 WW 年中的第几原创 2021-03-30 10:39:14 · 1179 阅读 · 0 评论 -
mysql重命名表
mysql重命名表语法:rename table old_table_name to new_table_name;例如:rename table t1 to t4;rename语句还可以将表移到另一个数据库中,语法如下:rename table old_database_name.table_name to new_database_name.table_name例如:rename table test.t1 to activemq.t1;实战场景:如果一张表数据量级是千万级别以上的,那么,给原创 2021-03-26 18:17:17 · 1499 阅读 · 1 评论 -
重学redis系列之redis缓存淘汰策略及常见问题
redis常备用来做缓存,那么什么是缓存?既然都是存储数据,与数据库相比又有什么不同?redis是可以用来做数据库的!相较于传统关系型数据库,redis还具有查询效率更高的特点(数据存于内存,内存的寻址速度要远远高于磁盘寻址速度)。既然redis具有查询速度快的特点,那么能不能使用redis代替传统关系型数据库呢?只能说少部分情况下是可以的,但是大部分情况下传统关系型数据库还是具有不可替代的地位。原因如下:相较于磁盘,内存数据计算机中的稀缺资源,内存大小总是有限的,因此redis通常被用来做缓存(maxm原创 2021-01-28 16:37:59 · 180 阅读 · 0 评论 -
redis持久化机制
redis相较与Memcache具有支持多种数据类型以及持久化的优势,而redis的持久化主要通过RDB和AOF实现。RDBRDB:redis内存快照,具有时点性特点。触发方式分为save、bgsave:save:为前台阻塞运行,适用于服务器停机维护时使用。bgsave:后台非阻塞运行,redis通过fork出子进程进行数据快照的保存,同时redis主进程使用copy-on-write(写时复制)的机制对外正常提供服务。bgsave可以通过redis配置文件实现save 900 1sav原创 2021-01-27 10:14:55 · 112 阅读 · 0 评论 -
redis集群
单机redis存在的问题:1.单点故障2.容量有限3.压力过大(socket、io、cpu计算)redis主从集群使用的是默认的异步复制,其特点是低延迟和高性能,是绝大多数 Redis 用例的自然复制模式。实现方式:命令实现,在规划好的从节点执行 REPLICAOF 主机名 主机端口,5.0以前使用 SLVAEOF 命令。执行该命令后,主机会生成rdb文件,从机会清空数据,然后同步、加载主机的数据。默认从机禁止写入数据。如果从机中途挂掉,修复以后(使用 redis-server ./conf原创 2021-01-22 16:53:40 · 115 阅读 · 0 评论 -
重学redis系列之sorted_set
sorted_set,redis所支持的最后一种数据类型,不但有去重的特点,还具有“排序”的特性,不过这里的排序不是按照我们添加的顺序进行排序,而是在添加元素的时候我们需要指定一个维度"SCORE",而sorted_set里面的排序便是依据这个SCORE作为排序依据的。依照惯例,先用help @sorted_set命令查看sorted_set相关的使用命令。sorted_set相关的命令是一组以“Z”打头的命令(因为S已经被set占用了)。添加元素:ZADD key [NX|XX] [CH] [IN原创 2021-01-21 09:55:29 · 282 阅读 · 0 评论 -
重学redis系列之set
看到set,我们对他的第一反应应该是无序、去重,依照惯例,通过帮助文档学习其常用命令:向set中添加元素:SADD key member [member …]summary: Add one or more members to a set取出(查看)set中元素:SMEMBERS keysummary: Get all the members in a set删除元素:SREM key member [member …]summary: Remove one or more mem原创 2021-01-08 15:25:38 · 170 阅读 · 2 评论 -
重学redis系列之hash
redis所支持的数据结构之一hash,类似我们常用的数据结构map,同样的,可以通过使用help @hash查看其命名的使用帮助。向hash中设置一个值,语法如下:HSET key field valuesummary: Set the string value of a hash field同时也可以向一个hash中设置多个键值对:有设置就有对应的获取:HGET key fieldsummary: Get the value of a hash field也可以一次获取多个字段:原创 2021-01-06 11:23:34 · 94 阅读 · 0 评论 -
重学redis系列之list
list作为redis支持的物种数据类型之一,有许多有用的方法,连接上redis以后我们可以使用help @list查看相关的命令。redis关于list的命令主要分为两大类以L开头和以R开头的命令,部分L开头的命令L代表的是left(部分是标识是list的命令),R代表的right,下面来看看redis关于list的一些常用命令:LPUSH key value [value …]summary: Prepend one or multiple values to a listLRANGE ke原创 2021-01-05 09:31:05 · 276 阅读 · 0 评论 -
mysql从头学起(二)------日常工作中需要注意的小细节
日常工作中需要注意的小细节数据类型的优化更小的数据类型通常更好,更小的数据类型通常更快,因为他们占用更少的cpu缓存、磁盘、内存。简单就好,简单数据类型的操作通常需要更少的cpu周期。整形比字符操作代价更低,其实mysql提供了函数INET_ATON(varchar)和INET_NTOA(int)使ip地址和整数可以进行互相转换,当然ip地址转换为整数以后可读性会变差,这需要在二者之间做一个衡量。尽量避免使用null。使用枚举来代替字符串。合理使用范式和反范式数据库的3范式规定了数据库原创 2020-11-20 14:38:51 · 80 阅读 · 0 评论 -
mysql从头学起(一)----- 性能监控
前言mysql做为当今关系型数据库的典型代表,以其开源、免费,性能较好等原因是各中小型企业项目中不可或缺的一部分。也因为这些原因,mysql也是现在coder面试中必不可少的一部分。近来也面试了一些人,几乎所有人都知道mysql,也都是用过。数据库是用来存储数据的,这无可厚非。我们都知道,系统优化中要考虑的一个重要点就是数据库的性能,如何快速的从数据库获取需要的数据,从而也就有了一道绕不开的坎,如何优化数据库?大多数面试者都知道数据库索引这个问题,也提到了如何编写sql和创建索引以提高sql执行效率,再原创 2020-11-17 10:36:32 · 111 阅读 · 0 评论 -
重学redis系列之string(bitmap经典案例)
接上一篇 重学redis系列之string,本来这个案例原计划是在上一篇做的,结果由于篇幅问题挪到了本篇介绍,废话少说,开始进入正题。会议一下上一篇的需求:需要对我们app的用户做一个活跃度统计,我们app的用户量不算太大也不是很小(3000多w),需求提到需要统计任意时间段内的用户活跃度(一个用户在一定时间段内登录我们app的天数,一定时间段内登录天天数达到xx的用户数等等),要求要快速响应。上一篇我们分析了,通过传统的关系型数据库,例如mysql也可以处理这个需求,但是响应速度可能相对较慢,同时由于数原创 2020-09-25 17:24:54 · 277 阅读 · 1 评论 -
重学redis系列之String
前言提到大名鼎鼎的redis,做开发的特别是后端对于它几乎是无人不知无人不晓。作为一个后端开发必须要掌握的技术之一,提到它,我们都知道它是一个key-value类型的基于内存的键值对存储的数据库,它相较于之前memcache提供了更加丰富的数据类型的支持,同时提供了对数据持久化的需求。作为面试官喜欢考察的考点之一,我们可以不加思索的答出它所支持的数据类型,所支持的持久化方式以及适用场景----缓存(减轻数据库压力,提高应用的吞吐量)等等。我之前一直是这么认为的,面试也是这么答的,直到上周接到一个需求,我才原创 2020-09-23 18:11:11 · 200 阅读 · 0 评论