当前位置:网站首页>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 .
边栏推荐
- Adopt a cow to sprint A shares: it plans to raise 1.85 billion yuan, and Xu Xiaobo holds nearly 40%
- Vscade editor esp32 header file wavy line does not jump completely solved
- 【学习笔记】AGC010
- 分布式事务解决方案
- [untitled]
- 分屏bug 小记
- Cloud detection 2020: self attention generation countermeasure network for cloud detection in high-resolution remote sensing images
- Practical example of propeller easydl: automatic scratch recognition of industrial parts
- Analysis of DHCP dynamic host setting protocol
- The difference between cache and buffer
猜你喜欢
我那“不好惹”的00后下属:不差钱,怼领导,抵制加班
10 张图打开 CPU 缓存一致性的大门
Star Enterprise Purdue technology layoffs: Tencent Sequoia was a shareholder who raised more than 1billion
About the problem of APP flash back after appium starts the app - (solved)
Awk of three swordsmen in text processing
ESP32 ① 编译环境
MATLAB中polarscatter函数使用
JS缓动动画原理教学(超细节)
人均瑞数系列,瑞数 4 代 JS 逆向分析
Cloud detection 2020: self attention generation countermeasure network for cloud detection in high-resolution remote sensing images
随机推荐
PHP calls the pure IP database to return the specific address
初学XML
Initialization script
DETR介绍
Conversion from non partitioned table to partitioned table and precautions
货物摆放问题
How to make the new window opened by electorn on the window taskbar
MongoDB 遇见 spark(进行整合)
. Net ultimate productivity of efcore sub table sub database fully automated migration codefirst
Ogre入门尝鲜
Go language learning notes - structure
【Presto Profile系列】Timeline使用
靠卖概念上市,认养一头牛能走多远?
How to continue after handling chain interruption / sub chain error removed from scheduling
“新红旗杯”桌面应用创意大赛2022
JS determines whether an object is empty
[untitled]
Sample chapter of "uncover the secrets of asp.net core 6 framework" [200 pages /5 chapters]
简单好用的代码规范
JS判断一个对象是否为空