python - Aerospike - Python 客户端 - NoSQL 基准测试
问题描述
我正在为客户端执行 NoSQL 性能基准测试。我想知道我的 Aerospike Python 代码是否最佳?我正在尝试记录查询时间和加载时间。数据有 500,000 行和 8 列。我的代码如下。
def test_db():
config = {
'hosts': [ ('127.0.0.1', 3000) ]
}
client = aerospike.client(config).connect()
t0 = time.time()
global rec
rec = {}
with open('skunkworks.csv', 'r') as f:
reader = csv.reader(f)
rownum = 0
for row in reader:
# Save First Row with headers
if rownum == 0:
header = row
else:
colnum = 0
for col in row:
rec[header[colnum]] = col
colnum += 1
rownum += 1
if rec:
client.put(('test', 'demo', str(rownum)), rec)
rec = {}
t1 = time.time()
load_time = t1 - t0
t2 = time.time()
for i in range(2,500002):
(key, metadata, record) = client.get(('test', 'demo', str(i)))
# print(record)
t3 = time.time()
read_time = t3 - t2
return [load_time , read_time]
解决方案
您的 Python 应用程序是作为单进程运行,还是多进程方法,例如 fastCGI?
如果您尝试进行基准测试,请确保它模拟您的应用程序的运行方式。要写入大量行,然后读取大量行,全部来自单个进程,通常不会模拟任何实际情况。也许在您的情况下确实如此,但如果不是,请使您的示例代码与实际访问模式匹配。
此外,您应该以与应用程序类似的方式部署基准测试。不要在与服务器节点相同的机器上运行基准测试,如果生产环境不是这样的话。
推荐阅读
- javascript - 如何获取没有空属性的新数组?
- c# - ClosedXML 和 UWP
- postman - 启动前关闭所有邮递员选项卡
- odoo - 在哪里可以找到运行 odoo 的文件
- javascript - babel-preset-react-native 和高阶组件
- r - 创建函数以整合关于 x 的 2 个分布
- javascript - 如何将变量从 PHP 的 while 循环传递到 JavaScript
- android - 如何使用 sqlite 从原始文件夹中读取文件?
- php - 如何将unicode值传递给codeigniter中的控制器函数
- java - Java8 Groupby 在字段上并收集对象