当前位置:网站首页>Some principles of mongodb optimization
Some principles of mongodb optimization
2022-07-07 13:12:00 【cui_ yonghua】
The basic chapter ( Can solve the problem of 80% The problem of ):
MongoDB data type 、 Key concepts and shell Commonly used instructions
MongoDB Various additions to documents 、 to update 、 Delete operation summary
Advanced :
Other :
1. Query optimization
Make sure your query takes full advantage of the index , use explain Command to check the execution of the query , Add the necessary indexes , Avoid table scanning .
2. Figure out the size of the hot data
Maybe your data set is very large , But it's not that important , What matters is how big your thermal data set is , How big is the data you often visit ( Including frequently accessed data and all index data ).
Use MongoDB, You'd better make sure your hot data is below the memory size of your machine , Make sure the memory can hold all the hot data .
3. Choose the right file system
MongoDB The data file is pre allocated , And in Replication Inside ,Master and Replica Sets Non - Arbiter Nodes will create enough empty files in advance to store operation logs .
These file allocation operations can be very slow on some file systems , Cause the process to be Block. So we should choose those file systems with fast space allocation . The conclusion here is to try not to use ext3, use ext4 perhaps xfs.
4. Choose the right hard disk
The choices here include the disk RAID The choice of , It also includes disks and SSD Comparative selection of .
5. Use less as far as possible in How to query
Especially in shard On , He will let your inquiry go by a shand Last run , If you have to use it as a last resort shard Index up .
Optimize in The way is to in Decompose into single queries one by one . The speed will increase 40-50 times
6. Reasonable design sharding key
The incremental sharding-key: Suitable for fields that can be delimited , such as integer、float、date Type of , The query time is relatively fast
Random sharding-key: It is suitable for the scenario of frequent write operations , And in this case, if it's in a shard It's going to make this shard The load is higher than the others , It's not balanced , So I hope to hash Inquire about key, Distribute writes across multiple locations shard on , Consider compounding key As sharding key, The general principle is fast query , Try to reduce the number of spans shard Inquire about ,balance Less equalization .
mongodb The default is a single record 16M, Especially in the use of GFS When , Be sure to pay attention to shrading-key The design of the .
Unjustified sharding-key There will be , Multiple documents , In a chunks On , meanwhile , because GFS Large files are often stored in , Lead to mongodb Doing it balance You can't get through sharding-key To separate these documents into different shard On , Now mongodb Will constantly report errors [conn27669] Uncaught std::exception: St9bad_alloc, terminating. Finally lead to mongodb Fall down .
terms of settlement : enlarge chunks size ( Cure the symptoms ), Well designed sharding-key( Permanent cure ).
7.mongodb Can pass profile To monitor data , To optimize .
See if it's on profile function Command db.getProfilingLevel() return level Grade , The value is 0|1|2,
Respectively means :0 On behalf of closed ,1 For recording slow orders ,2 Represent all
Turn on profile The function command is db.setProfilingLevel(level); #level Grade , The value is the same as above. level by 1 When , The default value of slow command is 100ms, Change to db.setProfilingLevel(level,slowms) Such as db.setProfilingLevel(1,50) This changes to 50 millisecond
adopt db.system.profile.find() View the current monitoring log .
边栏推荐
- 关于 appium 如何关闭 app (已解决)
- JS function 返回多个值
- MongoDB的导入导出、备份恢复总结
- JS缓动动画原理教学(超细节)
- Unity build error: the name "editorutility" does not exist in the current context
- .Net下极限生产力之efcore分表分库全自动化迁移CodeFirst
- Vscade editor esp32 header file wavy line does not jump completely solved
- Conversion from non partitioned table to partitioned table and precautions
- 【无标题】
- MySQL master-slave replication
猜你喜欢

Practical example of propeller easydl: automatic scratch recognition of industrial parts

【Presto Profile系列】Timeline使用

Cinnamon Applet 入门

【无标题】

我那“不好惹”的00后下属:不差钱,怼领导,抵制加班

ESP32 ① 编译环境

. Net ultimate productivity of efcore sub table sub database fully automated migration codefirst

Introduce six open source protocols in detail (instructions for programmers)

将数学公式在el-table里面展示出来

高端了8年,雅迪如今怎么样?
随机推荐
Cloud detection 2020: self attention generation countermeasure network for cloud detection in high-resolution remote sensing images
企业级自定义表单引擎解决方案(十二)--体验代码目录结构
【无标题】
Ip2long and long2ip analysis
初学XML
“新红旗杯”桌面应用创意大赛2022
解决缓存击穿问题
How did Guotai Junan Securities open an account? Is it safe to open an account?
regular expression
《开源圆桌派》第十一期“冰与火之歌”——如何平衡开源与安全间的天然矛盾?
ClickHouse(03)ClickHouse怎么安装和部署
ESP32系列专栏
【学习笔记】zkw 线段树
Realbasicvsr test pictures and videos
Sample chapter of "uncover the secrets of asp.net core 6 framework" [200 pages /5 chapters]
Why can basic data types call methods in JS
Pcap learning notes II: pcap4j source code Notes
. Net ultimate productivity of efcore sub table sub database fully automated migration codefirst
通过Keil如何查看MCU的RAM与ROM使用情况
MySQL master-slave replication