国产数据库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数据库的性能对比
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!