828华为云征文|Flexus X实例搭配华为云EulerOS,快速部署MySQL并执行读写性能测试

121 阅读5分钟

前言  

上一节中我们已经手把手的购买并进行连接了Flexus云服务器X实例具体可参考文章。

     ruocheng.blog.csdn.net/article/det…   

本篇博文将继续对华为云Flexus云服务器X实例进行MySQL相关的实例测评

查看镜像信息  

本地连接服务器之后输入指令 lsb_release -a 查看镜像信息    

从镜像信息中我们可以看到我们使用的镜像是Huawei Cloud EulerOS

什么是Huawei Cloud EulerOS?  

Huawei Cloud EulerOS(简称HCE OS),是基于华为开源社区openEuler构建的linux操作系统,提供云原生、高性能、安全稳定的执行环境来开发和运行应用程序,助力企业客户快速上云及开发者创新

MySQL安装与启动  

原计划是通过指令安装一个MySql 的 但是当我输入指令

dnf install mysql5-server mysql5-common mysql5            

显示如下内容    

看到这里不得不改变原有计划 采用 yum install mysql 来进行尝试,效果如下

看上去还是不错的。

接下来我们将会在华为云Flexus云服务器X实例下进行MySQL 的一系列操作啦。

启动MySQL  

通过指令systemctl start mysqld 来启动MySQL

当MySQL启动成功后通过指令 systemctl status mysqld 来查看状态    

连接MySQL  

通过mysql -u root -p 连接数据库

由于没有设置密码所以直接显示连接成功, 接下来我们设置以下密码

配置MySQL  

相关指令如下

# 使用mysql库            
use mysql;            

修改root的密码为root            

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';            

刷新权限            

flush privileges;            

退出            

exit;            

此时我们再次输入指令 mysql -u root -p 连接数据库的指令 会出现 输入密码的提示 , 我们此时输入 root 即可

外网访问MySQL  

第一步我们查看一下服务器的安全组设置是否开启了3306 端口, 通过查看安全组发现该端口并没有配置, 因此我们手动配置一下    

通过Navicat 连接数据库    

此时显示的是连接失败 , 因为我们需要一些其他设置才可以进行连接(很重要哦!也很容易忽略的地方)

操作命令  

修改host的值为% , 具体指令如下

# 切换数据库            
use mysql;            

修改host的值为%            

update user set host='%' where user='root' and host='localhost';            

刷新权限            

flush privileges;            

退出数据库            

exit;            

此时我们再次进行连接测试,显示如下图所示, ok 到目前为止基本上已经配置完成喽    

数据库读写速度测试  

到目前为止我们前期工作已经准备完成了,接下来我们进行读写测试来进一步体验华为云Flexus云服务器X实例    

1. 创建测试数据库  

2. 通过SQL 语句创建测试表  

首先我在git 上搜集了7767 条数据 , 我们接下来的目的就是通过py 将这些数据写入到数据库中, 查看用时,以及进行读取时查看用时

数据集如下    

字段说明:

 

字段名数据类型说明
labelint标签,其中 1 表示正向评论,0 表示负向评论
reviewtext评论内容

创建测试表的sql语句如下:    

CREATE TABLE test_table (            
id int NOT NULL AUTO_INCREMENT,            
label int NOT NULL,            
review TEXT NOT NULL,            
PRIMARY KEY (id)            
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;            

创建的数据表如下

    

Python写入测试  

import mysql.connector            
import time            
import csv            

数据库连接信息            

config = {            
'user': 'root',            
'password': 'root',            
'host': 'ip 地址',            
'database': 'sql_rc_test',            
'raise_on_warnings': True            
}            

创建连接            

creatConnector = mysql.connector.connect(**config)            

获取游标            

cursor = creatConnector.cursor()            

开始时间            

start_time = time.time()            

file_path = 'ChnSentiCorp_htl_all.csv'            

读取csv 数据, 并将数据插入到数据库            

with open(file_path, mode='r', encoding='utf-8') as csv_file:            
reader = csv.DictReader(csv_file)            
rows = list(reader)  # 将CSV行转换为列表,以便批量插入            

批量执行INSERT语句            

query = "INSERT INTO test_table (label,review) VALUES (%s , %s)"            
cursor.executemany(query, [(row['label'], row['review']) for row in rows])            

提交事务            

creatConnector.commit()            

关闭游标            

cursor.close()            

关闭连接            

creatConnector.close()            

结束时间            

end_time = time.time()            

打印所用时间            

print(f"总时间: {end_time - start_time} 秒")            

将csv 中的数据写入到数据库用时如下:

当然我这里采用了优化的写法, 先将CSV文件中的所有行读取到内存中,然后使用 executemany() 方法批量执行 INSERT 语句。这可以大大提高插入速度,尤其是当处理大量数据时。    

查看数据库中写入的数据

Python读取测试  

测试代码如下:

import mysql.connector            
import time            

数据库连接信息            

config = {            
'user': 'root',            
'password': 'root',            
'host': 'ip 地址',            
'database': 'sql_rc_test',            
'raise_on_warnings': True            
}            

创建连接            

cnx = mysql.connector.connect(**config)            

获取游标            

cursor = cnx.cursor()            

开始时间            

start_time = time.time()            

假设我们有一个特定的ID,例如表中最大的ID            

rand_id = 7766  # 替换为表中最大的ID            
query = "SELECT * FROM test_table WHERE id = %s"            
cursor.execute(query, (rand_id,))            

结束时间            

end_time = time.time()            

总时间            

total_time = end_time - start_time            

打印查询结果(如果有的话)            

result = cursor.fetchone()            
if result:            
print(f"查询ID {rand_id} 的结果: {result}")            

打印查询时间            

print(f"查询ID {rand_id} 的总时间: {total_time} 秒")            

关闭游标和连接            

cursor.close()            
cnx.close()            

结果如下图所示:

总结  

在创建MySQL镜像时,我们特别选择了华为云Flexus X实例,以实现性能加速。在测试阶段,通过对比写入和读取数据的时间,我们发现该实例的性能表现突出,显著优于其他同类产品。华为云Flexus X实例的MySQL加速功能确实名副其实,值得推荐。