0到1手把手教mongodb优化性能手段

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、mongodb读性能优化
  • 二、mongodb写性能优化
  • 总结


前言

MongoDB同关系型数据库一样,在数据量小时看不出任何问题,但是当数据的操作变的频繁,如对10万级的数据表连续进行查询操作,MongDB会变的非常缓慢。针对这种情况,我们对MongoDB进行性能优化。

索引的机制是:当你往某各个集合插入多个文档后,每个文档在经过底层的存储引擎持久化后,会有一个位置信息,通过这个位置信息,就能从存储引擎里读出该文档。
比如mmapv1引擎里,位置信息是(文件id + 文件内offset),在wiredtiger存储引擎里,位置信息是wiredtiger在存储文档时生成的一个key,通过这个key能访问到对应的文档。

对于索引的优化:MongoDB支持对DB的请求进行profiling,目前支持3种级别的profiling。
生产环境建议使用1级别的profiling,并根据自身需求配置合理的阈值,用于监测慢请求的情况,及时的做索引优化。


一、mongodb读性能优化

1. 创建索引:索引可以加速查询操作,可以根据查询条件创建单列索引、复合索引、全文索引等。

2. 选择合适的数据类型:选择合适的数据类型可以减少存储空间,提高查询效率。例如,使用整型代替字符串类型。

3. 避免全表扫描:尽量避免全表扫描,可以使用索引或者分片等方式来优化查询。

4. 使用投影操作:投影操作可以减少返回的数据量,提高查询效率。

5. 使用聚合操作:聚合操作可以将多个查询操作合并为一个操作,减少查询次数,提高查询效率。

6. 使用分片:分片可以将数据分散到多个节点上,提高查询效率和可扩展性。

7. 优化查询语句:优化查询语句可以减少查询时间,例如使用合适的查询条件、避免使用正则表达式等。

8. 使用缓存:使用缓存可以减少查询次数,提高查询效率。可以使用Redis等缓存工具来缓存查询结果。

9. 尽量不使用模糊查询等 ,改为精确查询条件

10. 多使用explain进行执行计划的优化

11. 分页查询,使用 limit() 限定返回结果的大小,降低服务器消耗及网络消耗

12. 查看数据库查询日志,来辅助慢查询的分析调优操作

二、mongodb写性能优化

1. 采用Capped Collection,固定大小:Capped Collections必须事先创建,并设置大小

2. 以最小的方式进行存储,比如颜色字符串存储更改为数字存储,应用层进行转换 

3. 一般情况下MongoDB query optimizer都工作良好,单有些情况需要使用强制索引hint

4. 采用Profiling,原因是它使用的是system.profile来记录,而system.profile是一个Capped Collection。Profile记录在级别为1时会记录慢命令,慢命令默认为100ms,其设置方法有两种,第一种是通过添加-showms启动参数配置;第二种是调用db.setProfilingLevel时加上第二个参数。

5. 读写分离,对于大规模数据集,可以使用分片技术来分散数据负载,提高读写性能。

6.索引优化:使用合适的索引可以大大提高查询性能。在设计索引时,需要考虑查询频率、数据量、数据类型等因素

7. 内存优化:使用合适的内存配置和缓存策略可以减少磁盘读写,提高读写性能

8. 硬件优化:使用高性能的硬件设备可以提高数据库的读写性能,如使用SSD硬盘、增加内存等。

9.日志优化:合理配置日志级别和日志输出方式,可以减少日志对性能的影响。

10. 定期维护:定期清理无用数据、压缩数据、重建索引等操作可以保持数据库的良好性能。 

总结

以上总结了数据库mongodb的常用优化方法。

你可能感兴趣的:(数据库学习从入门到精通,mongodb,数据库,nosql)