设置桌面图标文字背景透明
2012-08-21 11:01
465 查看
Mongodb并发与锁机制
1、 MongoDB 使用的锁
MongoDB 使用的是“readers-writer”锁, 可以支持并发但有很大的局限性,当一个读锁存在,许多
读操作可以使用这把锁,然而, 当一个写锁的存在,一个单一的写操作会 exclusively 持有该锁,同时
其它读,写操作不能使用共享这个锁;举个例子,假设一个集合里有 10 个文档,多个 update 操作不能
并发在这个集合上,即使是更新不同的文档。
2、 锁的粒度
在 2.2 版本以前,mongod 只有全局锁;在 2.2 版本开始,大部分读写操作只锁一个库,相对之前版本,
这个粒度已经下降,例如如果一个 mongod 实例上有 5 个库,如果只对一个库中的一个集合执行写操作,那
么在写操作过程中,这个库被锁;而其它 5 个库不影响。相比 RDBMS 来说,这个粒度已经算很大了!
3、 如何查看锁的状态
db.serverStatus()
db.currentOp()
mongotop
mongostat
the MongoDB Monitoring Service (MMS)
4、 哪些操作会对数据库产生锁?
下表列出了常见数据库操作产生的锁。
Changed in version 2.2.
Operation Lock Type
Issue a query Read lock
Get more data from a cursor Read lock
Insert data Write lock
Remove data Write lock
Update data Write lock
Map-reduce Read lock and write lock, unless operations are specified as non-atomic. Portions of map-reduce jobs can run concurrently.
Create an index Building an index in the foreground, which is the default, locks the database for extended periods of time.
db.eval()
Deprecated since version 3.0.
Write lock. The db.eval() method takes a global write lock while evaluating the JavaScript function. To avoid taking this global write lock, you can use the eval command with nolock: true.
eval
Deprecated since version 3.0.
Write lock. By default, eval command takes a global write lock while evaluating the JavaScript function. If used with nolock: true, the eval command does not take a global write lock while evaluating the JavaScript function. However, the logic within the JavaScript function may take write locks for write operations.
aggregate() Read lock
5、 哪些数据库管理操作会锁数据库?
某些数据库管理操作会 exclusively 锁住数据库,以下命令需要申请 exclusively 锁,并锁定一段时间
db.collection.ensureIndex(),
reIndex,
compact,
db.repairDatabase(),
db.createCollection(), when creating a very large (i.e. many gigabytes) capped collection,
db.collection.validate(),
db.copyDatabase().This operation may lock all databases
以下命令需要申请 exclusively 锁,锁定数据库,但锁定很短时间。
db.collection.dropIndex(),
db.collection.getLastError(),
db.isMaster(),
rs.status() (i.e. replSetGetStatus,)
db.serverStatus(),
db.auth(), and
db.addUser().
备注:可见,一些查看命令也会锁库,在比较繁忙的生产库中,也会有影响的。
6、 锁住多个库的操作
以下数据库操作会锁定多个库。
db.copyDatabase() 锁定整个mongod实例
db.repairDatabase() 会获取全局写锁,运行期间会阻塞其它操作。
Journaling 内部操作,短时间锁定所有数据库,所有的数据库共享一个journal。
User authentication requires a read lock on the admin database for deployments using user credentials.
For deployments authentication locks the admin database as well as the database the user is accessing.
All writes to a replica set’s primary lock both the database receiving the writes and then the local database for a short time.
The lock for the local database allows the mongod to write to the primary’s oplog and accounts for a small portion of the total time of the operation.
7、 JavaScript 操作的并发
Changed in version 2.4: The V8 JavaScript engine added in 2.4 allows multiple JavaScript operations to run at the same time.
Prior to 2.4, a single mongod could only run a single JavaScript operation at once.
8、事务
Mongodb不支持多文档的事务
9、Mongodb的隔离保证
对于单一文档来说,读与写操作为原子操作,所以单一文档总是处于一致状态,这表示我们的读取操作,不会看到部分更新。
但是对于多文档来说,mongodb不会对并发写进行隔离:
因此,查询数据时,基于时间的数据快照是不能保证的。比如,我们获取不到查询过程当中已经删除的文档,或已经更新的文档。
Reads can see data which may subsequently be rolled back in rare cases such as replica set failover or power loss.
It does not mean that read operations can see documents in a partially written or otherwise inconsistent state.
Other systems refer to these semantics as read uncommitted.
参考:http://liyanblog.cn/articles/2013/01/15/1358218545015.html
参考:http://docs.mongodb.org/manual/faq/concurrency/
本文出自 “与IT一起的日子” 博客,请务必保留此出处http://raugher.blog.51cto.com/3472678/1678704
1、 MongoDB 使用的锁
MongoDB 使用的是“readers-writer”锁, 可以支持并发但有很大的局限性,当一个读锁存在,许多
读操作可以使用这把锁,然而, 当一个写锁的存在,一个单一的写操作会 exclusively 持有该锁,同时
其它读,写操作不能使用共享这个锁;举个例子,假设一个集合里有 10 个文档,多个 update 操作不能
并发在这个集合上,即使是更新不同的文档。
2、 锁的粒度
在 2.2 版本以前,mongod 只有全局锁;在 2.2 版本开始,大部分读写操作只锁一个库,相对之前版本,
这个粒度已经下降,例如如果一个 mongod 实例上有 5 个库,如果只对一个库中的一个集合执行写操作,那
么在写操作过程中,这个库被锁;而其它 5 个库不影响。相比 RDBMS 来说,这个粒度已经算很大了!
3、 如何查看锁的状态
db.serverStatus()
db.currentOp()
mongotop
mongostat
the MongoDB Monitoring Service (MMS)
4、 哪些操作会对数据库产生锁?
下表列出了常见数据库操作产生的锁。
Changed in version 2.2.
Operation Lock Type
Issue a query Read lock
Get more data from a cursor Read lock
Insert data Write lock
Remove data Write lock
Update data Write lock
Map-reduce Read lock and write lock, unless operations are specified as non-atomic. Portions of map-reduce jobs can run concurrently.
Create an index Building an index in the foreground, which is the default, locks the database for extended periods of time.
db.eval()
Deprecated since version 3.0.
Write lock. The db.eval() method takes a global write lock while evaluating the JavaScript function. To avoid taking this global write lock, you can use the eval command with nolock: true.
eval
Deprecated since version 3.0.
Write lock. By default, eval command takes a global write lock while evaluating the JavaScript function. If used with nolock: true, the eval command does not take a global write lock while evaluating the JavaScript function. However, the logic within the JavaScript function may take write locks for write operations.
aggregate() Read lock
5、 哪些数据库管理操作会锁数据库?
某些数据库管理操作会 exclusively 锁住数据库,以下命令需要申请 exclusively 锁,并锁定一段时间
db.collection.ensureIndex(),
reIndex,
compact,
db.repairDatabase(),
db.createCollection(), when creating a very large (i.e. many gigabytes) capped collection,
db.collection.validate(),
db.copyDatabase().This operation may lock all databases
以下命令需要申请 exclusively 锁,锁定数据库,但锁定很短时间。
db.collection.dropIndex(),
db.collection.getLastError(),
db.isMaster(),
rs.status() (i.e. replSetGetStatus,)
db.serverStatus(),
db.auth(), and
db.addUser().
备注:可见,一些查看命令也会锁库,在比较繁忙的生产库中,也会有影响的。
6、 锁住多个库的操作
以下数据库操作会锁定多个库。
db.copyDatabase() 锁定整个mongod实例
db.repairDatabase() 会获取全局写锁,运行期间会阻塞其它操作。
Journaling 内部操作,短时间锁定所有数据库,所有的数据库共享一个journal。
User authentication requires a read lock on the admin database for deployments using user credentials.
For deployments authentication locks the admin database as well as the database the user is accessing.
All writes to a replica set’s primary lock both the database receiving the writes and then the local database for a short time.
The lock for the local database allows the mongod to write to the primary’s oplog and accounts for a small portion of the total time of the operation.
7、 JavaScript 操作的并发
Changed in version 2.4: The V8 JavaScript engine added in 2.4 allows multiple JavaScript operations to run at the same time.
Prior to 2.4, a single mongod could only run a single JavaScript operation at once.
8、事务
Mongodb不支持多文档的事务
9、Mongodb的隔离保证
对于单一文档来说,读与写操作为原子操作,所以单一文档总是处于一致状态,这表示我们的读取操作,不会看到部分更新。
但是对于多文档来说,mongodb不会对并发写进行隔离:
因此,查询数据时,基于时间的数据快照是不能保证的。比如,我们获取不到查询过程当中已经删除的文档,或已经更新的文档。
Reads can see data which may subsequently be rolled back in rare cases such as replica set failover or power loss.
It does not mean that read operations can see documents in a partially written or otherwise inconsistent state.
Other systems refer to these semantics as read uncommitted.
参考:http://liyanblog.cn/articles/2013/01/15/1358218545015.html
参考:http://docs.mongodb.org/manual/faq/concurrency/
本文出自 “与IT一起的日子” 博客,请务必保留此出处http://raugher.blog.51cto.com/3472678/1678704
相关文章推荐
- [转]设置桌面图标文字透明
- windows xp桌面图标文字背景不是透明的改透明
- CListCtrl ICon图标模式下,如何让设置背景透明与文字置透明
- 桌面图标的文字背景色如何恢复为透明
- 怎样去掉桌面图标阴影(文字背景透明)
- WinXP\2003怎么让桌面图标的文字背景透明(终于去掉了讨厌的图标蓝色背景文字)
- 想让您的桌面文字背景透明吗?
- 关于桌面图标边缘模糊及文字透明
- 想让您的桌面文字背景透明吗?
- XP电脑桌面图标文字带上颜色不透明 解决办法
- 解决css设置背景透明,文字不透明
- 将桌面图标背景颜色变为透明
- 设置背景透明文字内容不透明方法
- 让桌面文字背景透明的6步曲
- CSS 设置背景颜色透明,文字不透明
- 【转】桌面图标文字 透明
- [整机笔记]如何让桌面图标的蓝色背景改回透明
- 如何使桌面图标文字透明
- uitextfield 设置左图标以及图标文字间距,输入框背景图切换
- css——如何让一段文字自动换行,并且左对齐,设置背景透明