前言

前言

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

https://ruocheng.blog.csdn.net/article/details/141748572?spm=1001.2014.3001.5502

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

查看镜像信息

查看镜像信息

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

打开网易新闻 查看精彩图片

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

什么是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

启动MySQL

通过指令systemctl start mysqld 来启动MySQL

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

打开网易新闻 查看精彩图片

连接MySQL

连接MySQL

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

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

打开网易新闻 查看精彩图片

配置MySQL

配置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

外网访问MySQL

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

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

通过Navicat 连接数据库

打开网易新闻 查看精彩图片

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

操作命令

操作命令

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

# 切换数据库
use mysql;
# 修改host的值为%
update user set host='%' where user='root' and host='localhost';
# 刷新权限
flush privileges;
# 退出数据库
exit;

打开网易新闻 查看精彩图片

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

打开网易新闻 查看精彩图片

数据库读写速度测试

数据库读写速度测试

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

1. 创建测试数据库

1. 创建测试数据库

打开网易新闻 查看精彩图片

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

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

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

数据集如下

打开网易新闻 查看精彩图片

字段说明:

字段名

数据类型

label

int

标签,其中 1 表示正向评论,0 表示负向评论

review

text

评论内容

创建测试表的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写入测试

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读取测试

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加速功能确实名副其实,值得推荐。