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

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

时间:2024-11-20 12:45:30浏览次数:1  
标签:oceanBbase insert 数据库 mysql pymysql time data

一、待测试的表

说明:待测试的表中的数据应该包含各种类型的数据,如下是一个参考见表语句(实际的测试数据字段大约20多个,比这个参考表字段多)

 CREATE TABLE DB_TEST_T    (
    ID                  INT                     COMMENT 'ID',
    NAME                VARCHAR(200)            COMMENT '名称',
    CONTENT             mediumtext              COMMENT '内容',,
    CREATE_TIME         DATETIME                COMMENT '时间',
    PRIMARY KEY (ID)
) ENGINE=INNODB DEFAULT CHARSET=UTF8MB4 COMMENT='性能测试表';     

 

二、测试mysql写入能力的代码

#coding=utf-8
import pymysql
import time

# pip install pymysql==1.0.2
# 测试mysql单表插入性能

try:
    start_time = time.time()  # 记录开始时间
    connection1 = pymysql.connect(host='192.168.0.100', user='user', password='passwd', database='testdb', port=3306)

    # 连接数据库
    #mysql
    connection2 = pymysql.connect(host='192.168.0.98', user='user', password='passwd', database='mysqldb',  port=3306)


    # 操作数据库
    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}')

 三、细节

 从mysql读取14.8W数据,大约6秒左右,写入速度20秒左右,比较稳定,数据量增加后也没有明显的波动。

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

 

标签:oceanBbase,insert,数据库,mysql,pymysql,time,data
From: https://www.cnblogs.com/yclh/p/18556631

相关文章