【MongoDB】 基本概念
【MongoDB】 基本概念Metadatatitle: 【MongoDB】 基本概念
date: 2022-12-20 17:56
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/MongoDB
categories:
- 数据存储
keywords:
- 数据存储/MongoDB
description: 【MongoDB】 基本概念
什么是NoSQL?NoSQL是一种非关系型DMS,不需要固定的架构,可以避免joins链接,并且易于扩展。NoSQL数据库用于具有庞大数据存储需求的分布式数据存储。NoSQL用于大数据和实时Web应用程序。例如,像Twitter,Facebook,Google这样的大型公司,每天可能产生TB级的用户数据。
NoSQL数据库代表“不仅仅是SQL”或“不是SQL”。虽然NoRELNoSQL会是一个更好的名词。Carl Strozz在1998年引入了NoSQL概念。
传统的RDBMS使用SQL语法来存储和查 ...
Redis
RedisMetadatatitle: Redis
date: 2022-12-20 17:52
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/Redis
categories:
- 数据存储
keywords:
- 数据存储/Redis
description: Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。
什么是Redis
Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。
Redis是一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server(远程数据服务),使用C语言编写,Redis是一个key-value存储系统(键值 ...
MySQL
MySQLMetadatatitle: MySQL
date: 2022-12-20 17:14
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储
categories:
- 数据存储
keywords:
- 数据存储
description: MySQL
MySQL MySQL是一个开源的关系型数据库管理系统(RDBMS),它是使用C和C++编写的,并以GPL(GNU通用公共许可证)发布。MySQL是最流行的开源数据库之一,广泛用于Web应用程序的开发。
MySQL具有以下特点:可靠性:MySQL具有高度的稳定性和可靠性,可以处理大量数据和高并发访问。可扩展性:MySQL支持水平和垂直的扩展,可以根据需求增加服务器、集群或分区。灵活性:MySQL支持多种存储引擎,如InnoDB、MyISAM等,可以根据应用程序的要求选择合适的存储引擎。高性能:MySQL通过优化查询语句、索引和缓存等方式提供高性能的数据访问。安全性:MySQL提供了访 ...
【MySQL】 InnoDB的MVCC实现机制
【MySQL】 InnoDB的MVCC实现机制Metadatatitle: 【MySQL】 InnoDB的MVCC实现机制
date: 2022-12-20 17:12
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/MySQL
categories:
- 数据存储
keywords:
- 数据存储
description: MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。
前提概要什么是MVCC?
MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。
MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的 ...
【MySQL】 主从复制与读写分离
【MySQL】 主从复制与读写分离Metadatatitle: 【MySQL】 主从复制与读写分离
date: 2022-12-20 17:11
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/MySQL
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 主从复制与读写分离
主从复制主要涉及三个线程: binlog 线程、I/O 线程和 SQL 线程。
binlog 线程 : 负责将主服务器上的数据更改写入二进制日志中。
I/O 线程 : 负责从主服务器上读取二进制日志,并写入从服务器的中继日志中。
SQL 线程 : 负责读取中继日志并重放其中的 SQL 语句。
读写分离主服务器处理写操作以及实时性要求比较高的读操作,而从服务器处理读操作。
读写分离能提高性能的原因在于:
主从服务器负责各自的读和写,极大程度缓解了锁的争用;
从服务器可以使用 MyISAM,提升查询 ...
【MySQL】 分库分表
【MySQL】 分库分表Metadatatitle: 【MySQL】 分库分表
date: 2022-12-20 17:10
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/MySQL
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 分库分表
水平切分水平切分又称为 Sharding,它是将同一个表中的记录拆分到多个结构相同的表中。
当一个表的数据不断增多时,Sharding 是必然的选择,它可以将数据分布到集群的不同节点上,从而缓存单个数据库的压力。
垂直切分垂直切分是将一张表按列切分成多个表,通常是按照列的关系密集程度进行切分,也可以利用垂直切分将经常被使用的列和不经常被使用的列切分到不同的表中。
在数据库的层面使用垂直切分将按数据库中表的密集程度部署到不同的库中,例如将原来的电商数据库垂直切分成商品数据库、用户数据库等。
Sharding 策略
哈希取模: hash ...
【MySQL】 性能优化
【MySQL】 性能优化Metadatatitle: 【MySQL】 性能优化
date: 2022-12-20 16:15
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/MySQL
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 性能优化
使用 Explain 进行分析Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句。
比较重要的字段有:
select_type : 查询类型,有简单查询、联合查询、子查询等
key : 使用的索引
rows : 扫描的行数
优化数据访问减少请求的数据量
只返回必要的列: 最好不要使用 SELECT * 语句。
只返回必要的行: 使用 LIMIT 语句来限制返回的数据。
缓存重复查询的数据: 使用缓存可以避免在数据库中进行查询,特别在要查询的数据经常被重复查询时,缓存带来的查 ...
【MySQL】 索引
【MySQL】 索引Metadatatitle: 【MySQL】 索引
date: 2022-12-20 16:14
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/MySQL
categories:
- 数据存储
keywords:
- 数据存储
description: 索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现。
概述
MySQL索引是在存储引擎层实现的,不同存储引擎具有不同的索引类型和实现方式。
B+Tree索引是大多数MySQL存储引擎的默认索引类型。它可以用于查找、排序和分组,适用于全键值、键值范围和键前缀查找。主索引是聚簇索引,辅助索引的叶子节点记录着主键的值。
哈希索引具有快速的查找速度,但失去了有序性,只支持精确查找,无法用于排序和分组。InnoDB存储引擎支持自适应哈希索引,在B+Tree索引之上创建哈希索引以提高查找速度。
全文索引用于查找文本中的关键词,支持MATC ...
【MySQL】 B+树索引
【MySQL】 B+树索引Metadatatitle: 【MySQL】 B+树索引
date: 2022-12-20 16:12
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/MySQL
categories:
- 数据存储
keywords:
- 数据存储
description: 【MySQL】 B+树索引
概述
InnoDB中的索引方案:
使用页作为存储单位。
目录项记录存储目录项的页,具有不同的record_type和列。
用户记录存放在B+树的最底层节点。
聚簇索引:主键值搜索时有效,叶子节点存储完整的用户记录。
二级索引:通过非主键列搜索,需要在聚簇索引中查找完整记录。
联合索引:以多个列的大小作为排序规则建立索引。
InnoDB的B+树索引注意事项:
根页面不移动。
内节点中目录项记录的唯一性。
页面最少存储2条记录。
索引的使用
B+ 树索引在空间和时间上都有代价,所以没事儿别瞎建索引。
B+ 树索引适用于下 ...
【MySQL】 InnoDB
【MySQL】 InnoDBMetadatatitle: 【MySQL】 InnoDB
date: 2022-12-20 16:12
tags:
- 行动阶段/完成
- 主题场景/数据存储
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/数据存储/MySQL
categories:
- 数据存储
keywords:
- 数据存储
description: MySQL 默认的事务型存储引擎,**只有在需要它不支持的特性时,才考虑使用其它存储引擎。**
概述InnoDB是MySQL的默认事务型存储引擎,除非需要其他引擎所支持的特性,否则应该优先考虑使用InnoDB。
行格式
InnoDB将数据划分为以页为单位的基本交互单元,页的大小通常为16KB。
行格式是指以记录为单位向表中插入数据的方式,也被称为记录格式。InnoDB支持多种行格式,包括Compact、Redundant、Dynamic和Compressed。
COMPACT行格式是InnoDB中的一种行格式,记录的额外信息包括变长字段长度列表和 ...