搜索
首页数据库mysql教程Mongodb使用小结

Mongodb使用小结

Jun 07, 2016 pm 04:34 PM
mongodb使用讨论问题

以下讨论的问题,有一个前提,就是要保存的数据大于内存容量。否则你可无视之。。。 索引占用的空间有时候超出你的想象。 即使集合中只有一个默认的索引 _id, 1 亿条记录,索引占用超过 5G 。如果内存不足以保存索引,赶紧加内存吧 ~~~ 查询或者更新的速度,

        以下讨论的问题,有一个前提,就是要保存的数据大于内存容量。否则你可无视之。。。

        索引占用的空间有时候超出你的想象。即使集合中只有一个默认的索引_id, 1亿条记录,索引占用超过5G。如果内存不足以保存索引,赶紧加内存吧~~~

Mongodb使用小结

         查询或者更新的速度,有时候与文档数量的关系并不大。我在网上看到的最多的是,mongodb的速度与文档数量有关,与文档所占用空间的关系谈的人不多。我尝试在一台16G的机器上,添加100w文档,索引占用的空间大概100M不到。每个文档大小大概为50k, 100w的数据量大概占用的磁盘空间是50G,然后随机的update或者find_one100w个文档,update操作不会改变原有记录大小。原本以为才这点数据,mongodb应该像火箭一样飞起来,结果出乎意料,速度慢的要死,每秒大概只能更新50条记录左右,通过iostat或者mongostat查询,你会发现磁盘像疯了一样的转,好像吃了*,停也停不下来。想想我在sqlite中,100w记录量,查询的速度都比这要快。为什么会这么慢?mongodb也不过如此,可能还不如自己写的程序来的快?真的吗?

        了解一些b-tree的知识对使用mongodb或者其他关系数据库有好处。但索引不是万能,别以为充分利用了索引就以为mongodb会像火箭一样飞起来,有时候他会比蜗牛爬的还慢。应该根据业务需求,充分考虑数据在磁盘上保存的顺序和索引的关系,合理的设计索引。以前在学sqlserver的时候,书上说主键很重要,因为数据在磁盘上保存的顺序就是按主键的顺序来的,好像一本新华字典,书上的字按拼音的顺序保存,虽然我们也可以按部首去查询某个字,但要像获取所有”a”开头的汉字,总比获取所有“亻”的汉字要快的多。

        如果热点数据在内存中,查询与更新操作非常快,亿级数据,单实例不分片,每妙能处理上千次查询或者更新操作。否则,你的磁盘会转个不停,而且非常慢。即使充分使用了索引,因为数据不在内存中,操作系统需要先卸载部分数据腾出内存空间(如果内存不够的话)去映射磁盘上的数据。这个过程磁盘会疯一样的转。

         Mongodb的内存管理是交给操作系统的,即使mongodb重启,系统可能并不会立即释放系统cache,这个时候,如果热点数据还没有被系统卸载掉,查询的速度还是非常快的。这常常会给人以假象,mongodb快。。

        总之,索引与热点数据有多大,就给mongodb分配多大的内存。如果主要是保存数据,那么只要磁盘足够大,mongodb都可以把数据塞进去。

         Last: good luck…

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
mysql:blob和其他无-SQL存储,有什么区别?mysql:blob和其他无-SQL存储,有什么区别?May 13, 2025 am 12:14 AM

mysql'sblobissuitableForStoringBinaryDataWithInareLationalDatabase,而alenosqloptionslikemongodb,redis和calablesolutionsoluntionsoluntionsoluntionsolundortionsolunsolunsstructureddata.blobobobsimplobissimplobisslowderperformandperformanceperformancewithlararengelitiate;

mySQL添加用户:语法,选项和安全性最佳实践mySQL添加用户:语法,选项和安全性最佳实践May 13, 2025 am 12:12 AM

toaddauserinmysql,使用:createUser'username'@'host'Indessify'password'; there'showtodoitsecurely:1)choosethehostcarecarefullytocon trolaccess.2)setResourcelimitswithoptionslikemax_queries_per_hour.3)usestrong,iniquepasswords.4)Enforcessl/tlsconnectionswith

MySQL:如何避免字符串数据类型常见错误?MySQL:如何避免字符串数据类型常见错误?May 13, 2025 am 12:09 AM

toAvoidCommonMistakeswithStringDatatatPesInMysQl,CloseStringTypenuances,chosethirtightType,andManageEngencodingAndCollat​​ionsEttingsefectery.1)usecharforfixed lengengters lengengtings,varchar forbariaible lengength,varchariable length,andtext/blobforlabforlargerdata.2 seterters seterters seterters seterters

mySQL:字符串数据类型和枚举?mySQL:字符串数据类型和枚举?May 13, 2025 am 12:05 AM

mysqloffersechar,varchar,text,and denumforstringdata.usecharforfixed Lengttrings,varcharerforvariable长度,文本forlarger文本,andenumforenforcingDataAntegrityWithaEtofValues。

mysql blob:如何优化斑点请求mysql blob:如何优化斑点请求May 13, 2025 am 12:03 AM

优化MySQLBLOB请求可以通过以下策略:1.减少BLOB查询频率,使用独立请求或延迟加载;2.选择合适的BLOB类型(如TINYBLOB);3.将BLOB数据分离到单独表中;4.在应用层压缩BLOB数据;5.对BLOB元数据建立索引。这些方法结合实际应用中的监控、缓存和数据分片,可以有效提升性能。

将用户添加到MySQL:完整的教程将用户添加到MySQL:完整的教程May 12, 2025 am 12:14 AM

掌握添加MySQL用户的方法对于数据库管理员和开发者至关重要,因为它确保数据库的安全性和访问控制。1)使用CREATEUSER命令创建新用户,2)通过GRANT命令分配权限,3)使用FLUSHPRIVILEGES确保权限生效,4)定期审计和清理用户账户以维护性能和安全。

掌握mySQL字符串数据类型:varchar vs.文本与char掌握mySQL字符串数据类型:varchar vs.文本与charMay 12, 2025 am 12:12 AM

chosecharforfixed-lengthdata,varcharforvariable-lengthdata,andtextforlargetextfield.1)chariseffity forconsistent-lengthdatalikecodes.2)varcharsuitsvariable-lengthdatalikenames,ballancingflexibilitibility andperformance.3)

MySQL:字符串数据类型和索引:最佳实践MySQL:字符串数据类型和索引:最佳实践May 12, 2025 am 12:11 AM

在MySQL中处理字符串数据类型和索引的最佳实践包括:1)选择合适的字符串类型,如CHAR用于固定长度,VARCHAR用于可变长度,TEXT用于大文本;2)谨慎索引,避免过度索引,针对常用查询创建索引;3)使用前缀索引和全文索引优化长字符串搜索;4)定期监控和优化索引,保持索引小巧高效。通过这些方法,可以在读取和写入性能之间取得平衡,提升数据库效率。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。