![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 93
disgare
这个作者很懒,什么都没留下…
展开
-
数据库分库分表
如果存储的数据过多,查询效率会大大降低,如何去解决这个问题?1,限定数据的范围:禁止不带任何限制数据范围条件的查询语句,这样就不用查询整个数据库2,范式优化(垂直拆表):优化为 BC 范式,删除重复数据,或者单纯的拆字段3,水平拆表:保持数据表结构不变,通过某种策略将存储的数据分片。这样每一片数据分散到不同的表或者库中4,读写分离:主读副写,配置一下来实现 mysql 的主从复制今天介绍的重点就是垂直拆表(拆字段)和水平拆表(拆数据)原创 2024-03-24 13:35:55 · 261 阅读 · 0 评论 -
ES 数据库
熟悉 es 的同学都知道 es 一般有两种查询方式1,在 java 中构建查询对象,调用 es 提供的 api 做查询2,使用 json 调用接口做查询查询语句无非是将足够的信息丢给数据库,但是它却和 SQL 不一样有自己独立的查询方式。原创 2023-10-18 12:33:31 · 458 阅读 · 0 评论 -
转载:PostgreSQL 更新数据时 HOT优化
在 PostgreSQL 中,当更新一行数据时,实际上旧行并没有删除,只是插入了一行新数据。如果这个表其他列上有索引,而更新的列上没有索引,因为新行的物理位置发生变化,因此需要更新索引,这将导致性能下降。为了解决这个问题,PostgreSQL 引入了 Heap Only Tuple(HOT)技术,如果更新后的新行和旧行位于同一个数据块内,则旧行会有一个指针指向新行,这样就不用更新索引了,通过索引访问到旧行数据,进而访问到新行数据。要了解 HOT 技术,先来看一下 PostgreSQL 的数据块结构。如下图:转载 2022-12-05 19:39:35 · 378 阅读 · 0 评论 -
Redis 集群
主从复制指将主 Radis 的数据复制到其他从属 Radis 中,数据的复制只能从主机复制到从机,并且从机不可以写入数据主从复制的好处是读写分离已经容灾后快速恢复,主机读数据,从机写数据,因为大多数对数据库的操作都是读取数据,这么做可以减少服务器压力。原创 2022-10-12 19:28:45 · 788 阅读 · 1 评论 -
PostgreSQL 相关用法
pg 有很多自己的数据结构,比如 json。类型在使用上几乎完全一致,两者的区别主要在存储上,json数据类型直接存储输入文本的完全的拷贝,JSONB数据类型以二进制格式进行存储。除此之外,箭头还有可以有变种,->>表示取对应值文本的形式,可以理解为用->>取出来的值,都是字符串。注意,->拿的只是 json 对象的域,因此有很多操作符不能用,如果向map一样只取对象的值的话,还是尽量使用->>:用于将两个表的查询结果连接在一起,这里的连接不是联表的连接,而是纵向的连接,将两个查询结果合起来返回给用户。原创 2022-09-28 19:49:46 · 1378 阅读 · 0 评论 -
Redis 数据结构、对象与数据库
如果前一个节点的长度大于等于254个字节,那么previous_entry_length的大小为5个字节,第一个字节会被设置为0xFE(十进制的254,这也是特殊标记,redis 读到这个254时就知道该节点是5字节的了),之后的四个字节则用于保存前一个节点的长度。字典这种数据结构在 redis 中被大量使用,除了用来表示数据库之外,字典还是hash 键的底层实现之一,当一个 hash 键包含的键值对比较多,又或者键值对中的元素是比较长的字符串时,Redis就会使用字典作为哈希键的底层实现。原创 2022-09-13 20:35:33 · 328 阅读 · 0 评论 -
MySQL 开发规范
基于阿里编程规范,遵从开发规范可以避免错误。原创 2022-08-22 16:05:59 · 409 阅读 · 0 评论 -
MySQL 的记录存储结构、存储引擎与 Buffer Pool
但是utf8mb3没有考虑到生僻字以及繁体字,而随着人类的语言越来越抽象,emoji 类型字符也成了常用的字符,因此,我们一般在 mysql 中使用 utf8mb4,它是UTF-8 的完整实现,使用1到4个字节来表示字符。我们知道innodb是用页结构来存放数据的,每一页一般占16kb,而行中的记录被一个个的存放在页中,一般情况下,MySQL一次读取磁盘中一页的数据量放到内存中,那页中的行结构又是怎么存储的呢。计算机只能存储二进制的数据,所谓字符集就是字符的集合,它设定了字符和二进制的数据的对应关系。...原创 2022-08-20 22:29:09 · 691 阅读 · 0 评论 -
MySQL 数据类型、字符集相关内容
int:整型使用int定义,可以设置有符号和无符号(UNSIGNED),一个int占4字节,int后面可以不加(位数),加了也没有意义,同时,还有TINYINT、BIGINT等,类似java中bity、长整形浮点:MySQL中可以指定浮点数和定点数的精度,浮点型使用float或者double保存,后面一般是(M,D),M表示该数据的总位数,D表示小数点后面精度decimal:定点数一般来说比浮点数好,它使用string来存放小数点后的数据,这样就不会出现精度丢失的问题,它也是(M,D)形式的。.......原创 2022-08-04 16:16:16 · 172 阅读 · 0 评论 -
Redis 学习笔记
使用全局队列和子线程队列的方式可以避免加锁并保证线程安全,主线程将任务分发到子线程的队列中,自己处理自己队列中的任务,处理完成后,等待所有子线程处理完所有任务,继续收集任务到全局队列,在将任务分发给子线程,这样就避免了主线程和子线程同时访问队列的情况。客户端发起操作数据库请求,redis按照顺序处理请求,接收请求参数,接收完成后解析请求协议,得到请求命令,然后执行请求命令,即操作redis数据库,之后将结果返回给客户端,这就是redis单线程处理数据的过程。.........原创 2021-03-31 16:57:40 · 150 阅读 · 1 评论 -
MySQL 事务与锁与 MVCC
数据库为了满足现实生活中的模拟,一条语句通常是完不成的,比如转账,这些常常需要进行一系列操作的场景,被称之为事务,而 MySQL 则使用锁与 MVCC(还有日志)来支持事务。原创 2021-03-20 16:58:45 · 249 阅读 · 1 评论 -
MySQL 索引与索引优化
索引分类聚集索引:索引就是主键值,数据文件就是索引文件非聚集索引:索引与数据不放在一起,索引存放数据的地址种类哈希索引使用hash算法来完成数据的存储,与hashmap原理相同B树索引多路平衡搜索树,因此是有序的,节点中存放多个关键字关键字集合分布在整颗树中,不管是叶节点还是其他节点,都有关键字任何一个关键字出现且只出现在一个结点中搜索有可能在非叶子结点结束一个节点有n个关键字,就有n+1个子节点,子节点代表了关键字之间的区域插入与删除时自动调节以满足B树性质B+树索引b树进化原创 2021-03-20 21:11:40 · 1408 阅读 · 1 评论 -
MySQL 的 binglog、redolog、undolog
我们在每个修改的地方都记录一条对应的 redo 日志显然是不现实的,因此实现方式是用时间换空间,我们在数据库崩了之后用日志还原数据时,在执行这条日志之前,数据库应该是一个一致性状态,我们用对应的参数,执行固定的步骤,修改对应的数据。1,MySQL 就是通过 undolog 回滚日志来保证事务原子性的,在异常发生时,对已经执行的操作进行回滚,回滚日志会先于数据持久化到磁盘上(因为它记录的数据比较少,所以持久化的速度快),当用户再次启动数据库的时候,数据库能够通过查询回滚日志来回滚将之前未完成的事务。原创 2021-04-08 12:15:42 · 2630 阅读 · 1 评论 -
MySQL 基础语句学习笔记
Class 和 Object 类哪个先加载?什么时候加载的?在Java中,所有的对象都派生自Object,而Class类(注意此处是大写也是一个类)所以他也继承自Object,先加载ObjectJVM启动时使用的是C++代码对这些最初的核心类进行表示。分配好内存空间后,互相建立引用,进而才完成类的初始化。所以可以看到如果从JVM实现的角度来说,二者是同时完成加载的。Object中的方法getClass()hashCode()equals()clone() 要想实现深复制,那么要在类中重写clo原创 2021-04-08 21:32:04 · 260 阅读 · 1 评论 -
B 树和 B+ 树的插入、删除和数据页分裂机制
B树和B+树索引在磁盘中的存储扇区B+树比平衡二叉树、B树在磁盘中的优化Innodb数据文件在磁盘中的储存数据页数据页分裂行溢出B树和B+树的添加删除算法B树的添加算法B树的删除算法B+树的添加算法B+树的删除算法索引在磁盘中的存储扇区主存和磁盘之间的数据交换不是以字节为单位的,而是以n个扇区为单位的(一个扇区有512字节),通常是4KB(8个扇区),8KB(16个扇区),16KB,……64KB为单位的一个扇区的内容物理上存放在一起,就像内存中的分页管理机制一样B+树比平衡二叉树、B树在磁盘中的优原创 2021-09-07 14:42:17 · 2758 阅读 · 0 评论