coldsmog开发笔记
JS 事件笔记
Ckeditor 上传WPS图片失败问题
Springboot
SpringBoot 统一异常处理
Springboot 引入外部jar包
Springboot 打成war包
Springboot 多环境配置
SpringBoot @Scope注解学习
Springboot 快速生成项目API文档
SpringCache 缓存
Spring jetcache 二级缓存
Springboot 按条件装配类
FastJson的JsonPath语法
正则表达式语法
Spring 路径匹配
Feign 基础数据操作
监控Feign调用metrics
Springboot feign的性能优化
Jackson 设置序列化属性
SpringBoot 集成 Spring Data Mongodb 操作 MongoDB
MongoDB 的一些注意事项
MongoDB 指令对比
Jackson 解析XML
Springboot Redis注册
SpringBoot RedisTemplate批量插入
Springboot 指标监控Micrometer
springboot validation 注解校验
springboot 引入配置
Springboot 静态文件处理
Springboot 导出csv文件
Springboot 事件驱动(发布/订阅模式)
Springboot 启动过程和扩展点
Springboot 优化停机上下线
Spring自动装配 - 干饭角度学习
Springboot ShardingJDBC
Springboot的重试
springboot 动态修改端口
Oracle
Oracle 中实现自增ID
Oracle 定时任务
Oracle 解锁临时表
Oracle 检查连接数
Oracle 表空间
Oracle 解释执行SQL
markdown作图(适用typora)
服务器压测
业务对象层和数据层
并发限流处理
中间件
Yarn的使用
Dubbo学习笔记-RPC扩展和本地Mock
Dubbo学习笔记-泛化实现进行mock
Redis缓存穿透,缓存击穿,缓存雪崩
Galera 集群说明
Pip 镜像
pip 使用
MySQL命令行
数据库缓存双写方案
Git相关操作
Redis 操作时间复杂度一览
nacos 杂记
mybatis 散记
shardingjdbc
一次线上事故排查发现的Caffeine缓存死锁问题
设计模式
重新讲讲单例模式和几种实现
更优雅地实现策略模式
Http-headers
Prometheus 杂散笔记
JAVA 散记
CompletableFuture
Gson、FastJson、Jackson、json-lib对比总结
jackson 时间的序列化踩坑
JVM
自定义注解
mysql类型和java类型 转换一览表
枚举维护一个Map<value, Enum>的映射
Java中String +、concat、StringBuilder、StringBuffer 性能对比
TraceId 使用
MySQL 多数据源处理
Mybatis-plus 流式查询
JAVA发送win 桌面通知
idea 启动项目失败非代码问题杂记
Lambda 简述
Arthas 使用笔记
一种链式更新数据的数据模式
Skywalking 新增中间件插件
Redission 使用
数据导出为图片
IDEA 的热重启
Netty 工具类
maven 插件
本文档使用 MrDoc 发布
-
+
首页
MongoDB 的一些注意事项
名词:集合、 有限集合:到达上限后,覆盖原有数据 | SQL术语/概念 | MongoDB条款/概念 | | :------------------------- | :----------------------------------------------------------- | | 数据库 | [数据库](https://mongodb.net.cn/manual/reference/glossary/#term-database) database | | 表 | [集合](https://mongodb.net.cn/manual/reference/glossary/#term-collection) collection | | 行 | [文档](https://mongodb.net.cn/manual/reference/glossary/#term-document)或[ BSON](https://mongodb.net.cn/manual/reference/glossary/#term-bson)文档 document | | 字段 | [字段](https://www.mongodb.com/docs/v4.2/reference/glossary/#term-field) field | | 索引 | [索引](https://mongodb.net.cn/manual/reference/glossary/#term-index) index | | 表联接 | [`$lookup`](https://mongodb.net.cn/manual/reference/operator/aggregation/lookup/#pipe._S_lookup),嵌入式文件 | | 主键 | 主键,主键自动设置为 _id字段。 | | 汇总(例如group by) | aggregation pipeline (聚合通道)请参见[SQL到聚合的映射表](https://mongodb.net.cn/manual/reference/sql-aggregation-comparison/)。 | | 导出到新表 | [`$out`](https://mongodb.net.cn/manual/reference/operator/aggregation/out/#pipe._S_out)请参见[SQL到聚合的映射表](https://mongodb.net.cn/manual/reference/sql-aggregation-comparison/)。 | | MERGE INTO TABLE(合并表) | [`$merge`](https://mongodb.net.cn/manual/reference/operator/aggregation/merge/#pipe._S_merge) (从MongoDB 4.2开始可用)请参见[SQL到聚合的映射表](https://mongodb.net.cn/manual/reference/sql-aggregation-comparison/)。 | | 事务 | [事务 ](https://www.mongodb.com/docs/v4.2/core/transactions/)transactions(推荐使用单表事务) | 锁定模式 | 锁定模式 | 英文名 | 中文名 | | -------- | -------------------------------------- | ---------------- | | `R` | Represents Shared (S) lock. | 共享 (S)锁 | | `W` | Represents Exclusive (X) lock. | 独占(X)锁 | | `r` | Represents Intent Shared (IS) lock. | 意向共享(IS)锁 | | `w` | Represents Intent Exclusive (IX) lock. | 意向独占(IX)锁 | 若事务T对数据D加X锁,则其他事务都不能再对D加任何类型的锁,直至T释放D上的X锁;一般要求在修改数据前要向该数据加排他锁,所以排他锁又称为**写锁**。 若事务T对数据D加S锁,则其他事务只能对D加S锁,而不能加X锁,直至T释放D上的S锁;一般要求在读取数据前要向该数据加共享锁,所以共享锁又称为**读锁** 确定锁定的粒度级别是通过在尽可能低的数据节点级别上锁定,然后根据需要将这些锁升级到行、表、数据库层次结构的更高级别,以覆盖更多的记录或文件元素,这个过程被称为"锁升级"。如下矩阵所定义的MGL(Multiple granularity locking)锁定模式是彼此兼容的。 | 锁定模式 | NL | IS | IX | S | SIX | X | | :------: | :--: | :--: | :--: | :--: | :--: | :--: | | NL | Yes | Yes | Yes | Yes | Yes | Yes | | IS | Yes | Yes | Yes | Yes | Yes | No | | IX | Yes | Yes | Yes | No | No | No | | S | Yes | Yes | No | Yes | No | No | | SIX | Yes | Yes | No | No | No | No | | X | Yes | No | No | No | No | No | mongo常见命令的加锁 | Operation | 操作 | 数据库 | 集合 | | ---------------------------- | ---------------- | ---------------------------- | ---------------------------- | | Issue a query | 发出查询 | r(意图共享) | r(意图共享) | | Insert data | 插入数据 | w(意图独占) | w(意图独占) | | Remove data | 移除数据 | w(意图独占) | w(意图独占) | | Update data | 更新数据 | w(意图独占) | w(意图独占) | | Perform Aggregation | 聚合查询 | r(意图共享) | r(意图共享) | | Create an index (Foreground) | 创建索引(前台) | W(独占) | | | Create an index (Background) | 创建索引(后台) | w(意图独占) | w(意图独占) | | List collections | 查询集合列表 | r(意图共享)在 4.0 版更改。 | | | Map-reduce | 并行计算 | W(独占)和(共享)R | w(意图独占)和(意图共享)r | 危险操作 https://mongodb.net.cn/manual/faq/concurrency/ | Operation | Collection | Database | Global | 备注 | | ------------------------------------------------------------ | ---------- | ------------- | ------ | ------------------------------------------------------------ | | Create an index (Foreground) | | **W** | | 创建索引(前台) | | Map-reduce | | **W** & **R** | | 并行计算 | | [`cloneCollectionAsCapped`](https://www.mongodb.com/docs/v4.2/reference/command/cloneCollectionAsCapped/#dbcmd.cloneCollectionAsCapped) | | **W** | | 命令从同一数据库中现有的无限集合中复制成一个新的有限集合 | | [`collMod`](https://mongodb.net.cn/manual/reference/command/collMod/#dbcmd.collMod) | | **W** | | 使得可以向集合中添加选项或修改视图定义。 | | [`compact`](https://www.mongodb.com/docs/v4.2/reference/command/compact/#dbcmd.compact) | | **W** | | 重写集合中的所有数据和索引并对其进行碎片整理 | | [`convertToCapped`](https://www.mongodb.com/docs/v4.2/reference/command/convertToCapped/#dbcmd.convertToCapped) | | **W** | | 将现有的无限集合转换为同一数据库内的有限集合 | | [`renameCollection`](https://www.mongodb.com/docs/v4.2/reference/command/renameCollection/#dbcmd.renameCollection) | **W** | **W** | | 重命名索引。 MongoDB 4.2.2+该操作在目标数据库上具有排他(W)锁,并阻塞该数据库上的其他操作,直到操作完成。原为全局W | | [`authenticate`](https://www.mongodb.com/docs/v4.2/reference/command/authenticate/#dbcmd.authenticate) [`db.auth()`](https://www.mongodb.com/docs/v4.2/reference/method/db.auth/#db.auth) | | **W** | | 身份验证;持有锁但很短的时间内保持锁定 | | [`createUser`](https://www.mongodb.com/docs/v4.2/reference/command/createUser/#dbcmd.createUser) [`db.createUser()`](https://www.mongodb.com/docs/v4.2/reference/method/db.createUser/#db.createUser) | | **W** | | 创建用户;持有锁但很短的时间内保持锁定 | | [`create`](https://mongodb.net.cn/manual/reference/command/create/#dbcmd.create) | W | | | 明确创建一个集合或视图 | | [`createIndexes`](https://mongodb.net.cn/manual/reference/command/createIndexes/#dbcmd.createIndexes) | W | | | 在集合上建立一个或多个索引。 | | [`drop`](https://mongodb.net.cn/manual/reference/command/drop/#dbcmd.drop) | W | | | 从数据库中删除整个集合 | | [`dropIndexes`](https://mongodb.net.cn/manual/reference/command/dropIndexes/#dbcmd.dropIndexes) | W | | | 从指定集合中删除一个或多个索引(4.2+开始支持多个) | | [`reIndex`](https://mongodb.net.cn/manual/reference/command/reIndex/#dbcmd.reIndex) | W | | | 重做索引;4.2.2+这些操作在集合上获得排他(W)锁,并在集合上阻止其他操作,直到完成,原为全局W | | [`replSetResizeOplog`](https://mongodb.net.cn/manual/reference/command/replSetResizeOplog/#dbcmd.replSetResizeOplog) | W | | | 更改副本集成员的操作日志的大小。4.2.2+此操作对[`oplog`](https://mongodb.net.cn/manual/reference/local-database/#local.oplog.rs)集合进行排他(W)锁定,并阻止对集合的其他操作,直到完成.原为全局W | | [`db.copyDatabase()`](https://mongodb.net.cn/manual/reference/method/db.copyDatabase/#db.copyDatabase) | | | W | 复制数据库 | 一些排查和优化方式 分片 ``` sh.addShardTag('shard01', 'junior') sh.addShardTag('shard02', 'middle') sh.addShardTag('shard03', 'senior') sh.addTagRange('test.users', {'user.age': MinKey}, {'user.age':20}, 'junior') sh.addTagRange('test.users', {'user.age': 21}, {'user.age':40}, 'middle') sh.addTagRange('test.users', {'user.age': 41}, {'user.age': MaxKey}, 'senior') ``` 通过上面的6个命令给'test库的user表加标签,20以下对应标签为'junior',21-40对应标签为'middle',41以上对应标签为'senior'。同时把'junior'标签分配给'shard01',也就是0-20岁的user会全部写到'shard01',21-40岁的user会全部写到'shard01',41岁以上的user会全部写到'shard01' https://www.zhihu.com/question/483701542
寒烟濡雨
2024年2月5日 10:09
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码