![](https://img-blog.csdnimg.cn/20200624103829211.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库相关
文章平均质量分 73
e
风中的默默
1998年过去了,我们很怀念它
展开
-
MySQL双主双从实现方式
避免单一主服务器宕机,集群写入能力缺失从 1 复制 主1 ,从 2 复制 主 2主 1 复制 主 2,主 2 复制主 1也就是 主 1 和主 2 互为主从。主1主2互为主从,是为了以下情景,主1挂了,主2自动升级为主数据库,当主1恢复后,主1则变成次主数据库。图示四台服务器,每台服务器上安装了mysql8数据库举例说明1、在主1创建了一个mydb2数据库,从1自动“复制”主1生成数据库,2、因为主2也是主1 的从数据库,所以主2也“复制”主1生成数据库,原创 2024-07-18 17:39:50 · 16 阅读 · 0 评论 -
redis的主从模式、哨兵模式、集群模式
之前写的是。原创 2024-07-18 17:37:05 · 64 阅读 · 0 评论 -
Redis集群cluster数据分片机制
Redis Cluster 是 Redis 的。原创 2024-07-18 17:33:46 · 561 阅读 · 0 评论 -
Designing Data-Intensive Applications数据密集型应用系统设计-读书笔记
对于一个应用系统,如果“数据”是其成败决定性因素,包括数据的规模 、 数据的复杂度或者数据产生与变化的速率等,我们就可以称为“数据密集型应用系统”;知其然,知其所以然当出现意外情况如硬件、软件故障、人为失误等,系统应可以继续正常运转:虽然性能可能有所降低,但确保功能正确。随着规模的增长 ,例如数据量 、流量或复杂性,系统应以合理的方式来匹配这种增长。随着时间的推移,许多新的人员参与到系统开发和运维, 以维护现有功能或适配新场景等,系统都应高效运转。原创 2024-07-18 17:29:14 · 395 阅读 · 0 评论 -
Redis-布隆过滤器(Bloom Filter)详解
布隆过滤器(Bloom Filter)是 1970 年由布隆提出的,是一种非常节省空间的概率数据结构,运行速度快,占用内存小,但是有一定的误判率且无法删除元素。它实际上是一个很长的二进制向量和一系列随机映射函数组成,主要用于判断一个元素是否在一个集合中。通常我们都会遇到判断一个元素是否在某个集合中的业务场景,这个时候我们可能都是采用HashMap的Put方法。原创 2024-07-17 17:30:06 · 179 阅读 · 0 评论 -
Redis 深度历险:核心原理与应用实践 - 读书笔记
不过你也不必过于担心,因为 Redis 对 HyperLogLog 的存储进行了优化,在计数比较小时,它的存储空间采用稀疏矩阵存储,空间占用很小,仅仅在计数慢慢变大、稀疏矩阵占用空间渐渐超过了阎值时,才会一次性转变成稠密矩阵,才会占用 12KB的空间。数据段是由很多操作系统的页面组合而成,当父进程对其中一个页面的数据进行修改时,会将被共享的页面复制一份分离出来,然后对这个复制的页面进行修改,每个页面的大小只有 4KB。用户看到错误对话框后,会先阅读对话框的内容,再点击重试,这样就可以起到人工延时的效果。原创 2024-07-17 17:18:59 · 574 阅读 · 0 评论 -
TCP、UDP、TCP与UDP的区别及联系
TCP协议的这些特性使其成为现代网络通信中不可或缺的一部分,特别是在需要可靠数据传输的应用场景中,如Web浏览(HTTP)、文件传输(FTP)、邮件传输(SMTP)等。然而,TCP的这些特性也带来了一定的开销,因此在某些对实时性要求较高的应用中,可能会选择使用UDP(用户数据报协议)作为替代。TCP报文段包括源端口号、目的端口号、序列号、确认号、数据偏移、控制位(如SYN、ACK、FIN等)、窗口大小、校验和、选项和填充以及数据载荷。UDP提供了一个可选的校验和字段,用于检测数据报在传输过程中的错误。原创 2024-07-15 10:55:00 · 1039 阅读 · 0 评论 -
TCP网络模型
主机 A 中数据被传递给传输层,传输层将数据分割成合适的数据段,带上序号和校验信息等TCP头,形成传输层的数据报。TCP/IP模型与OSI模型的主要区别在于TCP/IP模型将OSI的会话层、表示层和应用层的功能合并为应用层,同时将OSI的数据链路层和物理层合并为链路层。在某些文献中,网络接口层可能被用来指代物理层和数据链路层的结合,即负责实际的网络硬件接口。在网络包传输的过程中,源 IP 和目标 IP 始终是不会变的,一直变化的是 MAC 地址,因为需要 MAC 地址在以太网内进行两个设备之间的包传输。原创 2024-07-15 10:51:56 · 907 阅读 · 0 评论 -
IO多路复用技术、select、poll、epoll联系与区别
epoll 是 Linux 内核提供的一种高效的 I/O 多路复用技术,用于监控大量文件描述符(file descriptors)的 I/O 事件。epoll是Linux下的一种高效的I/O多路复用技术。epoll_ctl:用于添加(EPOLL_CTL_ADD)、修改(EPOLL_CTL_MOD)或删除(EPOLL_CTL_DEL)感兴趣的文件描述符。异步的:epoll 允许应用程序先注册对特定的 I/O 事件,当这些事件发生之后操作系统会自动通知应用程序,这是异步 I/O 的一个关键特征。原创 2024-07-15 10:48:03 · 999 阅读 · 0 评论 -
TCP重传、滑动窗口、流量控制、拥塞控制机制
比如A给B发了1、2、3、4、5个报文,B收到1后应答2表示希望收到2,但是2丢失了,后面B收到3、4、5时都返回2,A收到了三个 Ack = 2 的确认,知道了 Seq2 还没有收到,就会在定时器过期之前,重传丢失的 Seq2。当网络中的流量过多时,可能会导致数据包丢失和延迟增加,拥塞控制的目的是避免这种情况的发生。在 TCP 头部「选项」字段里加一个 SACK数据,它可以将已收到的数据的信息发送给「发送方」,这样发送方就可以知道哪些数据收到了,哪些数据没收到,知道了这些信息,就可以只重传丢失的数据。原创 2024-07-15 10:43:57 · 536 阅读 · 0 评论 -
MySQL执行流程、行记录格式、数据日志、数据库三大范式
MySQL 中磁盘和内存交互的基本单位是页,一个页的大小一般是 16KB,也就是 16384字节,而一个 varchar 类型的列最多可以存储 65532字节,一些大对象如 TEXT、BLOB 可能存储更多的数据,这时一个页可能就存不了一条记录。如果查询的语句没有命中查询缓存中,那么就要往下继续执行,等执行完后,查询的结果就会被存入查询缓存中。在每个事务的执行过程中,都记录下回滚时需要的信息到一个日志里,那么在事务执行中途发生了 MySQL 崩溃后,我们可以通过这个日志回滚到事务之前的数据。原创 2024-07-15 10:40:11 · 1274 阅读 · 0 评论 -
缓存穿透、雪崩与击穿
缓存穿透、雪崩、击穿1、缓存穿透强调都没有数据+并发访问布隆过滤器缓存NULL值2、缓存雪崩强调批量Key过期+并发访问3、缓存击穿强调单个Key过期+并发访问互斥锁逻辑过期分布式并发控制1、缓存穿透缓存穿透是指数据库和缓存都没有的数据,这样缓存永远不会生效,大量的请求有可能导致数据库宕机。强调都没有数据+并发访问一般处理缓存穿透有布隆过滤器 和 缓存null值 两种方式。布隆过滤器布隆过滤器是使用一个初始全部是0的位数组,插入元素时先哈希一下,把哈希计算出的多个值的对应位置设为1,然后下次再有原创 2024-06-26 11:27:19 · 556 阅读 · 0 评论 -
Redis 数据类型和各自的使用场景
常见的有五种数据类型:String字符串,List列表,Hash哈希,Set集合、Zset有序集合。原创 2024-06-26 11:16:01 · 669 阅读 · 1 评论 -
《深入浅出MySQL:数据库开发、优化与管理维护(第3版)》
隔离性Isolation:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致,因为多个事务同时使用相同的数据时,不会相互干扰,每个事务都有一个完整的数据空间,对其他并发事务是隔离的。MySQLInnoDB引擎的行锁是通过索引加载的,也就是说,行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,行锁则无法实现,取而代之的是表锁,此时其它事务无法对当前表进行更新或插入操作。简而言之,第一范式就是无重复的列。原创 2024-06-26 11:12:53 · 723 阅读 · 0 评论 -
Redis大key问题
比如用String类型的Key存放大体积二进制文件型数据用List数据结构保存热点新闻的评论列表,因为评论数爆发增长导致存放的元素多,value过大。用redis-cli加上–bigkeys参数,可以找到某个实例的大key。要解决Big Key问题,无非就是减小key对应的value值的大小。原创 2024-05-09 20:50:14 · 243 阅读 · 0 评论 -
【redis设计原理】
Redis 是一种基于内存的数据库,它对数据的读写操作都是在内存中完成,所以它的读写速度非常快,常用于缓存,消息队列这些场景。Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、 List (列表)、Set(集合)、Zset(有序集合)、Bitmaps(位图)等等,并且对数据类型的操作都是原子性的,因为执行命令由单线程负责的,不存在并发竞争的问题。除此之外,Redis 还支持事务 、持久化、过期删除机制等等。原创 2023-08-20 11:35:09 · 9478 阅读 · 0 评论 -
【MySQL】阅读笔记
我们常说的索引数据结构,就是由存储引擎层实现的,不同的存储引擎支持的索引类型也不相同,比如 InnoDB 支持索引类型是 B+树 ,且是默认使用,也就是说在数据表中创建的主键索引和二级索引默认使用的是 B+ 树索引。之所以要逆序,是因为记录头信息中指向下一个记录的指针,指向的是下一条记录的「记录头信息」和「真实数据」之间的位置,这样的好处是向左读就是记录头信息,向右读就是真实数据,比较方便。但其实对于更新比较频繁的表,查询缓存的命中率很低的,因为只要一个表有更新操作,那么这个表的查询缓存就会被清空。原创 2023-08-08 14:56:49 · 7112 阅读 · 0 评论 -
cmu15-445课程笔记
总结起来,cmake …用于配置并生成构建文件,而 make 用于实际执行构建,根据构建文件中的规则进行编译和链接。cmake:将 CMakeLists.txt 文件中的配置指令解析为适用于所选构建系统的构建文件。接下来我们可以在本机的编译器编写我们的代码。然后在服务器上编译和运行我们的代码。make: 在生成了构建文件后,编译项目的源代码并生成最终的可执行文件。1、下载安装Clion,安装C++编译环境。2、服务器装依赖包,安装Cmake。Clion远程连接服务器。原创 2023-08-23 19:22:46 · 12846 阅读 · 0 评论 -
partition by
转载地址:https://blog.csdn.net/dwt1415403329/article/details/878353831>建表并插入数据,因为over是开窗函数,mysql不支持开窗函数,其他如oracle,sql server,db2...等新版本都支持(这里借用他人的数据) CREATE TABLE Employee( ID number(10) not null primary key, EmpName varchar(20), EmpSalary varchar(10)转载 2020-10-14 10:58:48 · 17438 阅读 · 0 评论 -
PL/SQL迁移Oracle数据库方法与报错详解
目录起因分析结论起因数据库迁移时(宿主机 >> 本机),导入表发生报错,启动项目时也报错。1:开始不明白数据库迁移时.sql与.dmp的区别,以为都差不多。开始用的是'导出表'方式,导出.dmp文件,从宿主机导出后,直接导入本机,一切正常。2:启动项目时,报错: ORA-00942: 表或视图不存在3:分析后想到直接导.dmp方式是否不能导出相关视图4:用另一种方法,'导出...原创 2020-04-29 20:55:39 · 2861 阅读 · 0 评论 -
ORA-01502数据库索引处于不可用状态
ORA-01502数据库索引处于不可用状态现象:原因:解决方法现象:原因:百度后查到了原因,是因为在此之前操作了这张表里的字段类型,把varchar2改成了clob(直接改是不可以的,varchar->long->clob,且更改时要求把数据清空),导致索引失效。解决方法1.首先查出该索引的表空间select tablespace_name from dba_in...原创 2019-12-19 11:01:46 · 634 阅读 · 1 评论 -
in关键字中参数超过最大值的解决方法
前台页面查询时报错定位到具体sql,放到PL SQL中查询也就是in关键字默认参数数量大于1000时,就会报错解决方法:/***@Description: sql查询中使用in关键字时 参数数量大于900则分段查询 *@param1: in中参数列表LIST *@param2: 需要查询的字段 *@author: V_US9Y3S *@date: 2020-7-6 */public static String getInParameter(List<String> l原创 2020-07-20 16:33:24 · 2395 阅读 · 0 评论 -
group by与order by的区别
1. order byorder by比较简单,作用就是排序asc 从上到下慢慢升序desc 从上到下慢慢降序默认为升序(就是你sql不写order by 它就是升序)order by后面跟多个字段时,排序按就近原则依次而来2. group byorder by 我的理解是:聚合分组聚合的意思就是聚合函数:例如 sum()、avg()、count()等等直接上个栗子:...原创 2020-07-08 14:11:33 · 52454 阅读 · 7 评论 -
索引
文章目录1. 索引是什么2. 索引分类3. 索引语法4. 索引结构分类5. 建立索引情况5.1 哪些情况要建索引5.2 哪些情况不要建索引6. 索引注意点1. 索引是什么索引是帮助MySQL高效获取数据的数据结构,也可以理解为:排好序的快速查找数据结构。大部分索引都是B+树索引,也有的是哈希索引优势:1.提高数据检索效率,降低数据库的IO成本。2. 提高数据排序效率,降低CPU的消耗。劣势:实际上索引也是一张表,该表保存了主键与索引字段 并指向实体表的记录,所以索引列也是要占空间的原创 2020-07-08 11:07:50 · 195 阅读 · 0 评论 -
数据库事务隔离级别
文章目录三种读取问题1. 脏读2. 不可重复读3. 幻读事务隔离级别三种数据读取问题出现的根本原因:并发访问三种读取问题1. 脏读读取未提交数据A事务读取B事务尚未提交的数据,此时如果B事务发生错误并执行回滚操作,那么A事务读取到的数据就是脏数据。就好像原本的数据是艾希 比较干净、纯粹。B事务更改艾希为盖伦,A事务在之后读取了这个数据(盖伦)。然后B又把数据回滚为艾希,而事务A却什么都不知道,傻傻的以为盖伦就是正确的值。最终结果就是事务A读取了此次的脏数据,称为脏读。2. 不可重复读前后原创 2020-07-07 14:23:26 · 3253 阅读 · 0 评论 -
数据库explain指令
文章目录explain指令覆盖索引explain指令mysql> explain select * from Dm_Dealer t where t.row_id = '20200630';+----+-------------+----------+------+---------------+------+---------+------+------+-------------+| id | select_type | table | type | possible_keys |原创 2020-06-30 10:19:43 · 913 阅读 · 0 评论 -
SQL中or关键字
SQL中or关键字背景原因解决过程背景同事测试时反应汇总的数据比库里正常的数据多了很多。正常只有432条,但汇总出了近五百条数据。原因查看了下汇总出的数据,发现有很多都重复了,但是按理来说用框架查出来的不会有重复,所以觉得可能是自己sql写的有问题。查询了相关资料后确定是sql中or关键字的问题。解决过程sql = "SELECT * ...原创 2020-01-02 19:52:30 · 11532 阅读 · 2 评论