ClickHouse:A股分钟数据的查询速度的测试[下]

说明:
1、my_db.stock_tb: 是一个22亿行,大约15列的大表且是单一表,压缩后的空间在50G,压缩率约30倍;
此表存了2010年以来的所有A股的1分钟线数据。为什么要设计成单一表,主要也就是想做一下压测。
2、我在家用电脑中WSL2下进行的单机方式测试,内存32G。
3、未作分区安排[特别说明]

下面就上述表进行简单测试。

1、LIMIT N测试

def get_data_from_ch(): # startdate : 2010-01-01
    
    client = Client('localhost')
    database_name = "my_db"
    table_name = 'stock_tb'
    code = "600036.XSHG"
    query_sql = f'SELECT * FROM {database_name}.{table_name}  LIMIT 10000000'
    print(query_sql)
    data = client.execute(query_sql)
    return data
t0 = time.time()
data = get_data_from_ch()
t1 = time.time()
print(f"get_data cost time : {t1-t0} s! ")

进行了不同LIMIT次数的测试:

python端:
在这里插入图片描述clickhouse-client端:
在这里插入图片描述
2、条件查询测试
(1)、单条件

def get_data_from_ch(): # startdate : 2010-01-01
    
    client = Client('localhost')
    database_name = "my_db"
    table_name = 'stock_tb'
    code = "600036.XSHG"
    query_sql = f"SELECT * FROM {database_name}.{table_name} WHERE code = '{code}' LIMIT 10"
    print(query_sql)
    data = client.execute(query_sql)
    return data
t0 = time.time()
data = get_data_from_ch()
t1 = time.time()
print(f"get_data cost time : {t1-t0} s! ")

(2)、标的和日期的多条件查询

def get_data_from_ch_by_code_and_datetime():
    client = Client('localhost')
    database_name = "my_db"
    table_name = 'stock_tb'
    startdate = "2018-01-01"
    enddate = "2022-02-02"
    code = "600036.XSHG"
    query_sql = f"SELECT * FROM {database_name}.{table_name} WHERE code ='{code}' AND toDate(datetime) >= toDate('{startdate}')  AND toDate(datetime) <= toDate('{enddate}') "
    print(query_sql)
    data = client.execute(query_sql)
    print(f"data : {len(data)}")
    return data

t0 = time.time()
data = get_data_from_ch_by_code_and_datetime()
t1 = time.time()
print(f"get_data cost time : {t1-t0} s! ")

python端:

在这里插入图片描述在这里插入图片描述clickhouse端:
在这里插入图片描述(3) 跨品种查询

f"SELECT * FROM {database_name}.{table_name} WHERE toDate(datetime) >= toDate('{startdate}')  AND toDate(datetime) <= toDate('{enddate}') "

在这里插入图片描述在这里插入图片描述换了不同的时段,速度基本差不多。相当于查询近一年的全A股市 的数据花的时间。

目前看,总体还算凑合,当然其主要优势在于跨品种查询上优势还是比较明显;但单一品种的查询优势不太明显。

但在小样本数据的查询上,比如对于某个标的,需要查5-10万量级的数据,这个优势不太明显。这种感觉更适合TDengine的场景。
在这里插入图片描述
还有哪些可以提高性能优化的点? 分库分表?异步读取?

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值