国产数据库oceanBbase,达梦,金仓与mysql数据库的性能对比 三、python读mysql写入oceanBbase数据库

系列导航

国产数据库oceanBbase,达梦,金仓与mysql数据库的性能对比 一、比对方法和结果

国产数据库oceanBbase,达梦,金仓与mysql数据库的性能对比 二、python读写mysql数据库

国产数据库oceanBbase,达梦,金仓与mysql数据库的性能对比 三、python读mysql写入oceanBbase数据库

国产数据库oceanBbase,达梦,金仓与mysql数据库的性能对比 四、python读mysql写入达梦数据库

国产数据库oceanBbase,达梦,金仓与mysql数据库的性能对比 五、python读mysql写入金仓数据库

国产数据库oceanBbase,达梦,金仓与mysql数据库的性能对比 六、python读mysql数据库

国产数据库oceanBbase,达梦,金仓与mysql数据库的性能对比 七、python读oceanBase数据库

国产数据库oceanBbase,达梦,金仓与mysql数据库的性能对比 八、python读达梦数据库

一、说明

oceanBbase社区版使用起来跟mysql几乎一样,连驱动都不需要改,直接使用mysql的驱动就可以。

但是使用时如果有执行时间长的语句会报如下错误

错误:,(4012, 'Timeout, query has reached the maximum query timeout: 10000000(us), maybe you can adjust the session variable ob_query_timeout or query_timeout hint, and try again.')

修改方法:

--设置最长执行时间
在OceanBase数据库中,ob_query_timeout 不能直接设置为无限。查询超时时间必须是一个具体的数值,以微秒(us)为单位。如果你希望设置一个非常长的超时时间,可以将 ob_query_timeout 设置为一个非常大的值,例如几天或几周的时间。

-- 1天 = 24 * 60 * 60 * 1000000 us
SET global ob_query_timeout = 864000000000;
FLUSH PRIVILEGES;

 

二、代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# coding=utf-8
import pymysql
import time
 
# pip install pymysql==1.0.2
# 测试oceanBase单表插入性能
# oceanBase社区版操作跟mysql几乎没有任何区别 驱动都是使用mysql 迁移起来非常方便 非常平滑
 
try:
    start_time = time.time()  # 记录开始时间
    connection1 = pymysql.connect(host='192.168.0.100', user='user', password='passwd', database='testdb', port=3306)
 
    #oceanBase
    connection2 = pymysql.connect(host='192.168.0.98', user='user', password='passwd', database='oceanBasedb',   port=2883)
 
    # 操作数据库
    cursor1 = connection1.cursor()  # 创建一个游标
 
    # 操作数据库
    cursor2 = connection2.cursor()  # 创建一个游标
 
    # 定义SQL查询语句,使用%s作为参数占位符
    sql = "SELECT  ID,NAME,CONTENT,CREATE_TIME FROM DB_TEST_T"
 
    for i in range(80):
        # 执行SQL查询
        cursor1.execute(sql)
 
        # 获取查询结果
        rows = cursor1.fetchall()
        data_to_insert = []
        for row in rows:
            # 插入数据到数据表的sql语句
             insert_data_sql = """insert into DB_TEST_T
                                        (
                                          ID,       NAME,       CONTENT,        CREATE_TIME
                                        )
                                        values
                                        (
                                          %s,       %s,         %s,             %s
                                        );"""
 
            data = (row[0], row[1], row[2], row[3] )
            data_to_insert.append(data)
 
        batch_size = 500000
        for i in range(0, len(data_to_insert), batch_size):
            batch = data_to_insert[i:i + batch_size]
            # 批量插入
            cursor2.executemany(insert_data_sql, data_to_insert)
            connection2.commit()  # 提交事务
 
        end_time = time.time()  # 记录结束时间
        execution_time = end_time - start_time  # 计算执行时间
        print(f"Function execution took {execution_time} seconds")
 
except pymysql.Error as e:
    print(f'错误:,{e}')

  完整测试代码获取:
(1)登录-注册:http://resources.kittytiger.cn/
(2)搜索:国产数据库oceanBbase,达梦,金仓与mysql数据库的性能对比   

posted @   万笑佛  阅读(107)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示