使用Python获取数据库的大小
如何使用Python获得给定数据库的大小?我之所以这样做,是因为我正在开发一个多用户图形前端来重新思考数据库,并希望能够为每个用户的数据库强制执行配额 下面的内容将非常棒:使用Python获取数据库的大小,python,rethinkdb,Python,Rethinkdb,如何使用Python获得给定数据库的大小?我之所以这样做,是因为我正在开发一个多用户图形前端来重新思考数据库,并希望能够为每个用户的数据库强制执行配额 下面的内容将非常棒: r.db('thedatabase').size().run() 50gb RejectionDB没有用于此类操作的内置命令 最简单的解决方案可能是在自己的(有限的)分区上启动多个RequiredDB实例(使用Docker可能会使这里的操作更简单)。RequiredDB没有用于此类操作的内置命令 最简单的解决方案可能是在自
r.db('thedatabase').size().run()
50gb
RejectionDB没有用于此类操作的内置命令
最简单的解决方案可能是在自己的(有限的)分区上启动多个RequiredDB实例(使用Docker可能会使这里的操作更简单)。RequiredDB没有用于此类操作的内置命令
最简单的解决方案可能是在自己的(有限的)分区上启动多个RejectionDB实例(使用Docker可能会使这里的事情变得更简单)。我知道这是一个迟来的答案,没有你要求的那么漂亮,但是为了将来寻找此功能的人,请将其放在这里: 实现这一点的一种方法是访问RejectionDB虚拟数据库
RejectionDB
。里面有一个stats表,其中包含大量关于数据库使用情况的信息
r.db('rethinkdb')
.table('stats')
.filter(
r.row('id').contains('table_server')
)('storage_engine')('disk')('space_usage')('data_bytes')
.reduce((left, right) => left.add(right))
此查询将检索所有节点上所有数据库中所有表的大小。本质上,它只是从stat对象中读取每个表的用法并将其相加
请注意,这将获得切分设置中所有节点的组合使用(我认为)
按服务器筛选:
基本上与第一个相同,只是以和
按数据库筛选:
与上面相同,只使用db
r.db('rethinkdb')
.table('stats')
.filter(r.and(
r.row('id').contains('table_server'),
r.row('db').eq('dbname'),
r.row('table').eq('tablename')
)
)('storage_engine')('disk')('space_usage')('data_bytes')
按表名过滤几乎是一样的。请记住,如果要针对数据库中的特定表,则还应确保为数据库添加筛选器。否则,具有相同名称的两个表将返回两个大小值。还要注意,我们只期望一个结果,因此不需要减少
最后,请记住它们只是ReQL查询
还要注意,这使用了JavaScript箭头(=>
)函数。在Python中,您可以将其替换为.reduce(lambda left,right:left+right)
如果您有任何改进,请发表评论:)我知道这是一个迟来的答案,没有您要求的那么漂亮,但请将此内容放在这里,以供将来寻找此功能的人使用: 实现这一点的一种方法是访问RejectionDB虚拟数据库
RejectionDB
。里面有一个stats表,其中包含大量关于数据库使用情况的信息
r.db('rethinkdb')
.table('stats')
.filter(
r.row('id').contains('table_server')
)('storage_engine')('disk')('space_usage')('data_bytes')
.reduce((left, right) => left.add(right))
此查询将检索所有节点上所有数据库中所有表的大小。本质上,它只是从stat对象中读取每个表的用法并将其相加
请注意,这将获得切分设置中所有节点的组合使用(我认为)
按服务器筛选:
基本上与第一个相同,只是以和
按数据库筛选:
与上面相同,只使用db
r.db('rethinkdb')
.table('stats')
.filter(r.and(
r.row('id').contains('table_server'),
r.row('db').eq('dbname'),
r.row('table').eq('tablename')
)
)('storage_engine')('disk')('space_usage')('data_bytes')
按表名过滤几乎是一样的。请记住,如果要针对数据库中的特定表,则还应确保为数据库添加筛选器。否则,具有相同名称的两个表将返回两个大小值。还要注意,我们只期望一个结果,因此不需要减少
最后,请记住它们只是ReQL查询
还要注意,这使用了JavaScript箭头(=>
)函数。在Python中,您可以将其替换为.reduce(lambda left,right:left+right)
如果您有任何改进,请发表评论:)