![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mongodb
aoerqileng
这个作者很懒,什么都没留下…
展开
-
mongodb知识回顾
mongodb --nssize默认情况下,MongoDB(MMAP)的每个数据库的命名空间保存在一个 16MB 的 .ns 文件中,平均每个命名占用约 628 字节,也即整个数据库的命名空间的上限约为 24000。每一个集合、索引都将占用一个命名。所以,如果每个集合有一个索引(比如默认的 _id 索引),那么最多可以创建 12000 个集合。如果索引数更多,则可创建的集合数就更少了。同时,如果集合数太多,一些操作也会变慢。不过,如果真的需要建立更多的集合的话,MongoDB 也是支持的,只需要在启动原创 2020-09-09 10:30:27 · 581 阅读 · 1 评论 -
MongoDB的读写分离
MongoDB的读写分离也是在代码层面配置参数,然后复制集自动的进行了转发,从mongodb自带的分片和读写分离来看,真是是比mysql功能上好很多,天然的大数据量的存储。使用的ReadPreference方式进行的读写分离,配置的策略还是比较多的参考:https://blog.51cto.com/lizhuquan0769/1763287...原创 2020-06-05 10:46:58 · 562 阅读 · 0 评论 -
mongodb索引
MongoDB indexes use a B-tree data structure.b-tree与b+tree区别?单列索引db.products.createIndex( { item: 1, quantity: -1 } , { name: "query for inventory" })Multikey IndexMongoDB uses multikey indexes to index the content stored in arrays. If you index原创 2020-05-15 10:32:50 · 257 阅读 · 0 评论 -
mongodb中replicate set的选举
影响选举的因素和条件节点成员每2秒向对方发送一次心跳,如何在10s内没有返回就标记不可访问。优先级的设置优先级的设置会影响选举,优先级是0的成员不能被选举成主库,不参加选举,只要当前主数据库具有最高优先级值,或者副本组中最新的oplog条目在10秒内没有更高优先级的辅助数据库,则副本集不举行选举如果较高优先级的成员在当前主节点的最新操作日志条目的10秒钟内赶上来,则该集合将举行一次选举,以便为较高优先级的节点提供成为主节点的机会。optime是成员从oplog应用的最后一个操作的时间戳。 除非副本原创 2020-05-12 18:37:40 · 325 阅读 · 0 评论 -
mongdb wiredtiger存储引擎
wiredtiger存储引擎是文档级别的并发,多个客户端能同时操作一个集合中的不通的文档。对于大多数的读写操作,wiredtiger使用乐观锁的并发控制,在global,database collection级别使用意向锁,当存储引擎检测到两个操作冲突时候,mongodb会透明的对导致写冲突的操作进行重试。一些全局的操作,例如一些包含多个数据库的短期操作,仍然会需要全局的实例级别锁,一些其他操作,比如删除集合,需要一个排他的数据库锁。快照和检查点wiredtiger提供mvcc,在操作的开始,wir原创 2020-05-12 16:30:02 · 322 阅读 · 0 评论 -
mongodb replicaset中的arbiter
https://docs.mongodb.com/v3.0/core/replica-set-arbiter/arbiter只能在replicaset是偶数的成员时候使用,参考官方文档原创 2020-05-09 10:25:52 · 637 阅读 · 0 评论 -
mysql5.7 json vs mongodb json
都知道mysql5.7提供了json类型,mongodb也是有json,作为dba,经常有rd咨询如何选择的问题。下面对比了5.7的json和mongodb的json,可以看出来应该怎么选择了。一:测试数据准备mysql> select count() from m_test;±---------+| count() |±---------+| 20999199 |±----...原创 2020-01-20 15:57:59 · 1353 阅读 · 0 评论 -
mongo按id范围的查询
db.test2.find({"_id":{$gt:ObjectId(“5e211ab82ea735c78cf9e90a”)}}).count();原创 2020-01-19 21:26:15 · 1296 阅读 · 0 评论 -
mongodb嵌套模糊查询
db.test2.find({“user_basic_info.name”:/134060994103/});{ “_id” : ObjectId(“5e211ab52ea735c78cf58f89”), “user_basic_info” : { “name” : “张三1340609941030”, “age” : “1340609941030”, “address” : { “city” ...原创 2020-01-19 21:11:25 · 843 阅读 · 0 评论 -
几种tree的文章记录
lsm tree:https://cloud.tencent.com/developer/news/340271https://www.percona.com/blog/2016/01/06/mongodb-revs-you-up-what-storage-engine-is-right-part-1/原创 2018-12-21 10:27:25 · 316 阅读 · 0 评论 -
mongodb中如何查找未使用的索引
在https://www.percona.com/blog/2015/08/21/find-unused-indexes-mongodb-tokumx/中介绍的使用方式是,使用profile去记录执行的命令,然后 db.system.profile.find().pretty()去查看哪些索引没有使用,这种方式影响还是比较大的,不是很好,其实可以参考oracle的方法,能记录索引最后使用时间,这样...原创 2018-12-21 10:01:33 · 1134 阅读 · 0 评论 -
mongodb二级节点恢复
在一个节点上,发现状态不多,是recovering状态,处理的方式是直接的自动恢复,数据不多,可以直接自动恢复。 关闭二级节点,情况data目录,启动节点,会变成startup2状态,开始同步数据。原创 2018-01-03 13:54:51 · 757 阅读 · 0 评论 -
Max number of threads (maxWaitQueueSize) of 500 has been exceeded
在使用ycbs进行测试的时候,设置1000的并发,客户端收到下面的错误提示com.mongodb.MongoWaitQueueFullException: Too many threads are already waiting for a connection. Max number of threads (maxWaitQueueSize) of 500 has been exceeded.ht原创 2017-11-02 15:21:11 · 6592 阅读 · 0 评论 -
mongodb中的read concern和write concern
read concert就是在复制集模式或复制集分片的模式下指定对于查询来说什么样的数据返回对于下面的语句可以使用readconcern选项 find command aggregate command and the db.collection.aggregate() method distinct command count command parallelCollect...原创 2017-10-30 17:00:59 · 2223 阅读 · 0 评论 -
mongodb中的chunk
chunk的概念有些类似于数据库中的分区的概念。 当chunk的大小达到了chunk size的指定大小后,mongodb会分裂这个chunk。一个只包含一个分片键值的chunk是不能被分裂的。默认的chunk的大小是64M,Small chunks lead to a more even distribution of data at the expense of more frequent m翻译 2017-09-11 14:11:26 · 6170 阅读 · 0 评论 -
mongodb分片
在使用http://blog.csdn.net/aoerqileng/article/details/53173173搭建完成分片的环境后,可以进行对集合进行分片了。 MongoDB使用分片键值的范围对集合中的数据进行分区。 每个范围定义了不重叠的分片键值范围,并与一个块相关联。 mongodb试图将chunk均衡的分布到集群的分片中,分片键的选择对于效率有很大的影响。 一旦对集合进行了分片翻译 2017-09-11 12:05:02 · 506 阅读 · 0 评论 -
搭建sharded cluster
1创建replica set的配置server 如果使用配置文件,设置 sharding.clusterRole to configsvr,replication.replSetName 为控制server的名称。 2连接到一个配置server mongo –host –port 3初始化rs rs.initiate( { _id: “”, configsvr原创 2016-11-15 16:50:18 · 907 阅读 · 3 评论 -
mongodb线上部署注意事项
mongodb支持的平台及建议使用平台如下: Amazon Linux Debian 7.1 RHEL / CentOS 6.2+ SLES 11+ Ubuntu LTS 12.04 Ubuntu LTS 14.04 Windows Server 2012 & 2012 R2并发 MMAPv1 在3.0开始,MMAPv1提供集合级别的锁,所有的集合有一个唯一的读写锁,允许多个客户翻译 2017-08-25 17:51:01 · 701 阅读 · 0 评论 -
mongodb简单命令
启动服务 ./mongod–dbpath进入shell ./mongod –dbpath 进入shell cd /usr/local/mongodb/bin $ ./mongo show dbs use test 没有就创建,如果库是空的,show dbs是看不到的 连接远程服务 mongodb://admin:123456@localhost/test 删除数据库: 首先原创 2016-07-21 11:48:34 · 964 阅读 · 0 评论 -
mongodb中的索引二
通常mongodb中的索引的创建方式如下: {sortkey:1querycriteria:1} 这种方式下,已经排好顺序了,所以只要在排好序的key中找满足查询条件的记录即可,需要扫描的数据量比较大,还有一种索引的创建方式: {querycriteria:1,sortkey:1}这种创建的方式中,不需要扫描很多的记录,在索引中查找满足条件的记录,但是需要在内存中排序,如果满足记录的条件很多,原创 2016-08-29 13:53:22 · 644 阅读 · 0 评论 -
mongodb锁
mongodb使用多粒度的锁来让操作在全局,数据库,collection级别加锁,允许单独的存储引擎在collection以下级别实现他们自己的并发控制。 使用reader-writer锁来允许并发的读共享资源访问,但是在MMAPv1中,对每个写操作使用排他访问。 除了共享锁,排他锁,还有is,ix锁,当在一个粒度上加锁后,所有高级别粒度都使用意向锁。 比如在写collection的时候,所有翻译 2016-08-09 12:06:40 · 2117 阅读 · 0 评论 -
mongodb使用profiler
profiler可以定位慢查询,有3个级别 0 关闭profiling 1 只包含slow操作,2记录所有操作 默认情况下是off的, 开启,并设置级别 db.setProfilingLevel(2) 默认情况下,慢操作的限制是100毫秒, db.setProfilingLevel(0,20)该命令设置级别,并设置慢操作阈值,但是级别是针对当前数据库的,慢操作阈值是针对实例的。 查看p翻译 2016-08-09 14:28:29 · 970 阅读 · 0 评论 -
部署replica set
replica set应该有奇数个成员,这样可以让选举正常进行。需要在每个机器上安装mongodb,replica set成员的网络必须是可通的,下面是测试的方式 EXAMPLE Given a replica set with three members running on three separate hosts:m1.example.net m2.example.net m3.exa翻译 2016-08-09 15:37:29 · 601 阅读 · 0 评论 -
mongodb用户与角色
mongodb提供了一些内置的角色来控制用户访问mongodb系统,还可以自己创建符合自己需要的角色。 mongodb存放所有的角色信息在admin.system.roles中添加用户 user reporting db.createUser( { user: “reportsUser”, pwd: “12345678”, roles: [原创 2016-08-23 15:40:38 · 3704 阅读 · 0 评论 -
mongodb查看执行计划
mongodb中的集合是非结构化的,所以列的个数,类型之类的没有什么限制,很随意,构建一个测试集合 db.test.find() { “_id” : ObjectId(“57bd09252e819a8d920a0bbc”), “x” : 1 } { “_id” : ObjectId(“57bd09652e819a8d920a0bbd”), “x” : 1, “y” : 2 }原创 2016-08-24 11:20:34 · 2056 阅读 · 0 评论 -
mongodb存储引擎
内存映射文件对MMAPv1引擎是很重要的部分,通过使用内存映射文件,mongodb将数据文件看成是在内存中,所以提供了快速的操作及处理访问数据很简单的方式。 对于访问的文档放到内存中,没有访问的不会映射到内存中。 默认情况下mongodb每60s写数据文件到磁盘,100毫秒写次journal文件。很多情况下,mongodb和操作系统会很频繁的刷新数据到磁盘,所以上面的值只是代表了理论上的最大值。原创 2016-08-24 17:44:08 · 1578 阅读 · 0 评论 -
mongodb的优先级
The priority settings of replica set members affect both the timing and the outcome of elections for primary. Higher-priority members are more likely to call elections, and are more likely to win. Use原创 2016-08-24 19:06:14 · 1687 阅读 · 0 评论 -
mongodb vote member
最多有7个vote member,要想超过7个vote member需要设置成非vote成员, 设置方法如下; cfg = rs.conf() cfg.members[3].votes = 0 cfg.members[4].votes = 0 cfg.members[5].votes = 0 rs.reconfig(cfg)原创 2016-08-25 11:29:15 · 550 阅读 · 0 评论 -
mongodb 中的读写
如果一个replica set中有4个member,只有3个可用,那么默认情况下写会一直等待,直到4个成员都可用,可以在写入的时候指定策略,使写操作 不会被阻塞 db.products.insert( { item: “envelopes”, qty : 100, type: “Clasp” }, { writeConcern: { w: 2, wtimeout: 5000 } }原创 2016-08-25 12:08:10 · 1205 阅读 · 0 评论 -
mongodb查看锁信息
serverStatus 的输出中可以看到锁的信息 Dividing locks.timeAcquiringMicros by locks.acquireWaitCount can give an approximate average wait time for a particular lock mode.locks.deadlockCount provide the number of ti原创 2016-08-25 16:06:30 · 6619 阅读 · 0 评论 -
mongodb设置shell提示
将prompt变量设置成特定的函数或字符串就可以修改对应的提示 prompt=function(){ return (new Date())+”>”; }; prompt=function(){ if(typeof db==’undefined’){ return ‘(nodb)>’; } try{ db.runCommand({getLastError:1});转载 2016-08-25 17:21:39 · 1085 阅读 · 0 评论 -
mongodb远程访问提示没有权限的一个问题
MongoDB shell version: 2.6.12 connecting to: 10.200.142.44:27018/mongo_test 2017-06-16T10:07:07.713+0800 Error: 18 { ok: 0.0, errmsg: “auth failed”, code: 18, codeName: “AuthenticationFailed” } at sr原创 2017-06-16 10:22:23 · 5402 阅读 · 0 评论 -
mongo用户权限,限制访问
感觉mongo权限这块很乱,配置起来很麻烦 在安装完成后,没有使用auth启动,在配置文件中有bind_ip 这个时候bind_ip是不起作用的,别的机器依然能远程访问 不能使用kill -9 杀掉mongodb进程,我使用后,之前配置的权限就不对了,认证总是通不过,要使用kill -2在使用replica set的模式的时候,创建完后,admin中没有用户,需要使用 localhost in原创 2016-09-25 13:12:47 · 1029 阅读 · 0 评论 -
mongodb中的聚合
mongodb提供三种方式来实现聚合:聚合管道,map-reduce,及单一目的的聚合方法。 管道操作可以在分片的集合上运算,可以使用索引来提高效率,管道使用了mongodb内部的操作来进行高效数据聚合,是聚合操作的首选。 map-reduce使用定制的js函数来进行map和reduce操作,方式相比较管道来说,相对效率不高但是更复杂。 单一目的的聚合方法:这种方式是操作在单个的集合上,相比较翻译 2017-08-18 16:24:55 · 501 阅读 · 0 评论 -
mongodb sharded cluster中的概念
mongodb的分片集群包含下面的几部分: shared:每个shared包含一系列的分片数据,每个shared可以部署为单个的replica set mongos:这个是个查询路由,在客户端和集群间提供接口 config servers:配置server,存放了元数据和集群的配置信息,3.2版本中,配置server可以部署为一个replica set 拓扑图的连接: https://do原创 2016-11-15 16:15:44 · 1658 阅读 · 0 评论 -
mongodb笔记
最大的BSON文档的大小是16兆,超过这个大小需要使用GrdiFS API 文档需要_id域作为主键,如果没有指定_id域,那么会使用ObjectIds 作为默认值。 对于WiredTiger storage engine readConcern选项允许选择读的隔离级别,可以使用majority,这个级别可以读写入到replica set大部分成员中的数据,不可回滚。 MMAPv1 存储引擎,原创 2016-08-15 16:36:19 · 656 阅读 · 0 评论