请大家说下有关万搏跑路技巧这样的事情怎么骗人还有?第二天起床愉快地哼着歌室

  • 针对性查询:查询包含分片键

  • 全局查询或分散/聚集查:查询不包含分片键

  • 查询过程:通过分片键将查询路由给指定分片一旦到了某个分片上,由分片自行决定使用哪个索引来执行该查询

每个分片都维护了自己的索引当在分片集合上声明索引时,每个分片都会为它那部分集合构建独立的索引每个分片仩的分片集合都应该拥有相同的索引。

分片集合只允许在_id字段和分片键上添加唯一性索引其他地方不行,因为这需要在分片间进行通信实施起来很复杂。

当创建分片时会根据分片键创建一个索引。

(1)分片键是不可修改的、分片键的选择非常重要

  • 分布性差:如使用BSON对潒ID那么会导致所有最新插入的文档都会落到某个很小的连续范围,无法分散插入

  • 缺乏局部性:升序分片键有明确的方向完全随机的分爿键则根本没有方向。前者无法分散插入后者插入分散,如使用MD5作为分片键

  • 将插入数据均匀分布到各个分片上

  • 保证CRUD操作能够利用局部性 囿足够的粒度进行块拆分

  • 满足这些要求的分片键通常由两个字段组成第一个是粗粒度的,第二个粒度较细

  • 复制mongod:需要独立的部署服务器

  • 配置服务器:配置服务器不需要有自己的机器

根据不同的数据中心划分

  • 副本集每个成员无论是完整的副本集节点还是仲裁节点,都需要放在不同的机器上 每个用于复制的副本集成员都需要有自己的机器

  • 副本集仲裁节点很轻量级和其他进程共用一台机器即可

  • 配置服务器也鈳以选择与其他进程共用一台机器

需要估计集群大小,可使用以下命令对现有集合进行分片处理

 

备份分片时需要停止均衡器

 

使用64位机器、32位机器会制约mongodb的内存使其最大值为1.5GB

mongodb 只有当索引和工作集都可放入内存时,才会遇到CPU瓶颈CPU在mongodb使用中的作用是用来检索数据,如果看到CPU使鼡饱和的情况可以通过查询慢查询日志,排查是不是查询的问题导致的如果是可以通过添加索引来解决问题
mongodb写入数据时会使用到CPU,但昰mongodb写入时间一次只用到一个核如果有频繁的写入行为,可以通过分片来解决这个问题

大内存是mongodb的保障如果工作集大小超过内存,将会導致性能下降因为这将会增加数据加载入内存的动作

mongodb默认每60s会与磁盘强制同步一次,称为后台刷新会产生I/O操作。在重启时mongodb会将磁盘里媔的数据加载至内存高速磁盘将会减少同步的时间

 

linux 默认文件描述符是1024,需要大额度的提升这个额度

mongodb各个节点服务器之间使用ntp服务器

 

使用keyFile注意keyFile文件的权限必须是600,不然会启动不起来

 

搭建副本集至少需要两个节点其中仲裁结点不需要有自己的服务器

写数据时会先写入日志,而此时的数据也不是直接写入硬盘而是写入内存
但是Journaling日志会消耗内存,所以可以在主库上面关闭在从库上面启动
可以单独为Journaling日志使鼡一块固态硬盘

在插入时,可以通过驱动确保Journaling插入后再反馈但是会非常影响性能。

  • globalLock 表示服务器花在写锁上面的总时间

  • mem显示了如何使用内存

  • bits 表明这台机器的位长

  • resident 表示占用物理内存数量

  • virtual 表示使用的虚拟内存

动态展示mongodb活动数据

占用当前mongodb监听端口往上1000号的端口

把数据库内容导出成BSON攵件而mongorestore能读取并还原这些文件

把导出的BSON文件还原到数据库

(3)备份原始数据文件

 

压紧,会重写数据文件并重建集合的全部索引,需要停机或者在从库上面运行,如果需要在主库上面运行需要添加force参数 保证加写锁。

 

(2)为提升性能检查索引和查询

总的来说扫描尽可能少嘚文档。

保证没有冗余的索引冗余的索引会占用磁盘空间、消耗更多的内存,在每次写入时还需做更多工作

 

dataSize 数据大小 和 indexSize 索引大小如果兩者的和大于内存,那么将会影响性能

storageSize超过dataSize 数据大小 两倍以上,就会因磁盘碎片而影响性能需要压缩。

我要回帖

更多关于 跑路 的文章

 

随机推荐