加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 一、MySQL/MariaDB
    • 二、Redis
    • 三、MongoDB
    • 四、PostgreSQL
    • 五、TiDB
    • 總結(jié):
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

RISC-V公測(cè)平臺(tái)發(fā)布 · 數(shù)據(jù)庫在RISC-V服務(wù)器上的適配評(píng)估

2023/08/18
3441
閱讀需 20 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

上一期講到Y(jié)CSB在RISC-V服務(wù)器上對(duì)MySQL進(jìn)行性能測(cè)試(RISC-V公測(cè)平臺(tái)發(fā)布 · 使用YCSB測(cè)試SG2042上的MySQL性能),在這一期文章中,我們繼續(xù)深入討論RISC-V+數(shù)據(jù)庫的應(yīng)用。本期就繼續(xù)利用HS-2平臺(tái)來測(cè)試數(shù)據(jù)庫軟件在RISC-V服務(wù)器上的兼容性。

參與此次實(shí)驗(yàn)的數(shù)據(jù)庫如下:

Redis

MongoDB5

PostgreSQL

TiDB

MySQL/MariaDB

實(shí)驗(yàn)機(jī)配置如下:

處理器:SG2042(64核心)

內(nèi)存:32GB

操作系統(tǒng):Ubuntu 22.10 (GNU/Linux 6.1.31 riscv64)

一、MySQL/MariaDB

在上一期中,為了測(cè)試YCSB(Yahoo! Cloud Serving Benchmark)性能測(cè)試軟件,順便測(cè)試了MySQL在RISC-V服務(wù)器上的兼容性。

MySQL數(shù)據(jù)庫服務(wù)是一個(gè)完全托管的數(shù)據(jù)庫服務(wù),可使用世界上最受歡迎的開源數(shù)據(jù)庫來部署云原生應(yīng)用程序。它是百分百由MySQL原廠開發(fā),管理和提供支持。

直接使用包管理器安裝MySQL:

sudo apt-get install mysql-server

當(dāng)然除了包管理器安裝,也嘗試了編譯安裝MySQL,結(jié)果提示編譯失敗,因此,MySQL不能直接通過編譯安裝MySQL,而需要在編譯之前打上相關(guān)補(bǔ)丁,然后再編譯。

同時(shí)也測(cè)試了MariaDB在RISC-V服務(wù)器上的兼容性,MariaDB是一個(gè)通用的開源關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它是世界上最受歡迎的數(shù)據(jù)庫服務(wù)器之一, MariaDB在GPLv2開源許可下發(fā)布,并保證保持開源。

先嘗試直接通過包管理器安裝:

sudo apt-get install mariadb-server

在通過包管理器安裝并正常運(yùn)行后,接下來就嘗試通過編譯安裝MariaDB。

先下載MariaDB的源碼包并解壓:

wget

https://dlm.mariadb.com/3239838/MariaDB/mariadb-11.0.2/source/mariadb-11.0.2.tar.gz

進(jìn)入MariaDB源碼文件夾:

tar -xzvf mariadb-11.0.2.tar.gz

執(zhí)行cmake并編譯:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DMYSQL_DATADIR=/home/mariadb
-DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWIYH_READLINE=1 -DWIYH_SSL=system -DVITH_ZLIB=system -DWITH_LOBWRAP=0
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
make -j64
sudo make install -j1

打開配置文件并編輯:

vim /home/mariadb/my.cnf

啟動(dòng)服務(wù)器并測(cè)試是否能連接數(shù)據(jù)庫服務(wù)器:

sudo /usr/local/mariadb/bin/mysqld_safe --user=mysql --skip-grant-tables
/usr/local/mariadb/bin/mariadb

連接成功!

二、Redis

接下來就是Redis了,Redis全稱為REmote DIctionary Server(Redis), 由 Salvatore Sanfilippo編寫。是一個(gè)開源的、使用 ANSI C 語言編寫、遵守 BSD 協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存、分布式、可選持久性的鍵值對(duì)(Key-Value)的存儲(chǔ)數(shù)據(jù)庫,并提供多種語言的 API。

Redis 通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因?yàn)橹担╲alue)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等類型。

通過APT安裝Redis:

sudo apt install redis-server

然后啟動(dòng)Redis服務(wù):

sudo servcie redis-server start

進(jìn)入redis-cli:

redis-cli

如果能進(jìn)入Redis Shell那就說明安裝成功。

編譯安裝:

wget

https://github.com/redis/redis/archive/refs/tags/7.0.12.tar.gz

解壓:

tar -xzvf 7.0.12.tar.gz

進(jìn)入Redis文件夾:

cd redis-7.0.12/

編譯:

make BUILD_TLS=yes USE_SYSTEMD=yes -j64

測(cè)試一下(可選):

make test

安裝:

sudo make install

啟動(dòng)服務(wù)器:

redis-server

redis-server &(后臺(tái)運(yùn)行)

運(yùn)行redis-benchmark壓力測(cè)試(10萬次請(qǐng)求,20個(gè)客戶端),以CSV文件形式輸出。

redis-benchmark -n 100000 -c 20 --csv

結(jié)果如下:

因此Redis通過APT安裝和編譯安裝兩種方式均可以。

三、MongoDB

接下來就是MongoDB,MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫。由 C++ 語言編寫。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。

通過APT安裝MongoDB:

sudo apt install mongodb

結(jié)果提示不支持通過apt安裝,因此我們選擇源碼編譯安裝。

下載源碼包:

wget
https://fastdl.mongodb.org/src/mongodb-src-r6.0.8.tar.gz

解壓縮:

tar -xzvf mongodb-src-r6.0.8.tar.gz

進(jìn)入mongodb源碼文件夾:

cd mongodb-src-r6.0.8/

編譯:

python3 buildscripts/scons.py install-mongod -j64

結(jié)果編譯失?。?/p>

在安裝相關(guān)的包以后,依舊無法編譯。

四、PostgreSQL

然后就是PostgreSQL,PostgreSQL 是一個(gè)免費(fèi)的對(duì)象-關(guān)系數(shù)據(jù)庫服務(wù)器(ORDBMS),在靈活的BSD許可證下發(fā)行。PostgreSQL 開發(fā)者把它念作 post-gress-Q-L。PostgreSQL 的 Slogan 是 "世界上最先進(jìn)的開源關(guān)系型數(shù)據(jù)庫"。

通過APT安裝:

apt-get install postgresql postgresql-client

測(cè)試一下:

sudo -i -u postgres
psql

編譯安裝:

下載源代碼

wget

https://ftp.postgresql.org/pub/source/v15.3/postgresql-15.3.tar.gz

解壓:

tar -xzvf postgresql-15.3.tar.gz

新建pg文件夾:

mkdir pg

進(jìn)入:

cd postgresql-15.3/

配置:
./configure --prefix=/home/perfxlab01/pg

編譯并安裝:

make world -j64

make install-world -j64

進(jìn)入~/pg/

初始化數(shù)據(jù)庫:

./bin/initdb -D ./data/

啟動(dòng)數(shù)據(jù)庫:

bin/pg_ctl -D ./data/ -l logfile start

成功啟動(dòng)數(shù)據(jù)庫后,接下來就是測(cè)試數(shù)據(jù)庫性能了。PostgreSQL和Redis一樣也自帶了壓力測(cè)試程序。

新建用于壓力測(cè)試的數(shù)據(jù)庫:

bin/psql -U postgres -h localhost

(進(jìn)入psql shell)

CREATE DATABASE test;

(退出psql shell)

初始化用于壓力測(cè)試的數(shù)據(jù)庫:

bin/pgbench -i test

開始?jí)毫y(cè)試:

bin/pgbench -c 100 -T 300 -j 64 test

壓力測(cè)試結(jié)果如下:

pgbench (15.3)
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 1
query mode: simple
number of clients: 100
number of threads: 64
maximum number of tries: 1
duration: 300 s
number of transactions actually processed: 93122
number of failed transactions: 0 (0.000%)
latency average = 322.405 ms
initial connection time = 156.199 ms
tps = 310.168586 (without initial connection time)
statement latencies in milliseconds and failures:
0.005 0 set aid random(1, 100000 * :scale)
0.002 0 set bid random(1, 1 * :scale)
0.002 0 set tid random(1, 10 * :scale)
0.002 0 set delta random(-5000, 5000)
0.201 0 BEGIN;
1.144 0 UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
0.429 0 SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
290.788 0 UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
26.624 0 UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
0.432 0 INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
2.556 0 END;

五、TiDB

接下來就是TiDB了,TiDB 是 PingCAP 公司自主設(shè)計(jì)、研發(fā)的開源分布式關(guān)系型數(shù)據(jù)庫。該數(shù)據(jù)庫使用Go語言編寫。

下載最新版的TiDB源碼包以后解壓并進(jìn)入源碼文件夾,然后編譯:

tar -xzvf tidb-7.1.1.tar.gz
cd tidb-7.1.1/
make

結(jié)果編譯失?。?/p>

同時(shí)也嘗試了通過腳本安裝,結(jié)果提示不支持該架構(gòu)。

總結(jié):

通過此次實(shí)驗(yàn),得出了以下結(jié)果。

1、上一期我就提到MySQL不支持直接通過編譯安裝,只能通過打Ubuntu提供的補(bǔ)丁才能編譯(詳見MySQL server fails to build on RISC-V 64),而MariaDB通過編譯安裝或包管理器安裝兩種方式均可以。但是通過編譯安裝后后續(xù)要作進(jìn)一步手工配置(教程見參考資料),而通過包管理器安裝系統(tǒng)自動(dòng)給你配置好,開箱即用,因此建議通過APT(包管理器)安裝MySQL/MariaDB,更加省時(shí)方便。

2、目前測(cè)試的四款數(shù)據(jù)庫軟件中,MongoDB只有適用于Ubuntu 22.04 LTS的軟件包,而TiDB無論是腳本安裝還是編譯安裝均不支持riscv64。因此希望這兩個(gè)數(shù)據(jù)庫在RISC-V架構(gòu)上的支持再加把勁。

3、此次兼容性測(cè)試中表現(xiàn)最亮眼的是PostgreSQL和Redis,這兩者編譯下來都挺順利,而且還能正常運(yùn)行。說明這兩個(gè)數(shù)據(jù)庫對(duì)riscv64的兼容性做得是非常好。尤其是PostgreSQL,之前PostgreSQL BuildFarm里有社區(qū)成員使用riscv64平臺(tái)上的編譯器編譯成功了。因此PostgreSQL能夠在riscv64平臺(tái)上成功編譯并運(yùn)行就是必然的了。

4、Redis和PostgreSQL都自帶了壓力測(cè)試工具,Redis的redis-benchmark設(shè)置好壓力測(cè)試參數(shù),然后只要等測(cè)試結(jié)果出爐即可,而PostgreSQL的pgbench相比于redis-benchmark,只要在設(shè)置壓力測(cè)試參數(shù)前再加創(chuàng)建測(cè)試數(shù)據(jù)庫和初始化測(cè)試數(shù)據(jù)庫這兩步即可。因此,自帶壓力測(cè)試程序這一點(diǎn),對(duì)于這兩個(gè)數(shù)據(jù)庫來說是加分項(xiàng),因?yàn)槭褂米詭У膲毫y(cè)試程序可以幫助使用者了解到該服務(wù)器在數(shù)據(jù)庫方面上的性能。

參考資料:

MariaDB 簡(jiǎn)介

Redis 教程https://www.runoob.com/redis/redis-tutorial.html

MongoDB官網(wǎng)https://www.mongodb.com/zh-cn

MongoDB開發(fā)者社區(qū)https://www.mongodb.com/community/forums/t/when-to-upload-version-on-debian/181125

mongodb-server binary package in Ubuntu Focal riscv64

https://launchpad.net/ubuntu/focal/riscv64/mongodb-server

MySQL server fails to build on RISC-V 64

https://bugs.mysql.com/bug.php?id=100356

部署Mariadb數(shù)據(jù)庫到Linux(源碼編譯安裝)

https://www.cnblogs.com/DragonStart/p/10823222.html

PostgreSQL BuildFarm Status

https://buildfarm.postgresql.org/cgi-bin/show_status.pl

PostgreSQL BuildFarm Status History

https://buildfarm.postgresql.org/cgi-bin/show_history.pl?nm=boomslang&br=REL_15_STABLE

TiDB

https://docs.pingcap.com/zh/tidb/stable

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
MKL17Z256VMP4 1 Freescale Semiconductor Kinetis L 32-bit MCU, ARM Cortex-M0+ core, 256KB Flash, 48MHz, MAPBGA 64

ECAD模型

下載ECAD模型
$5.01 查看
FT230XS-R 1 FTDI Chip Microprocessor Circuit, CMOS, PDSO16,

ECAD模型

下載ECAD模型
$2.26 查看
ATMEGA88PA-AUR 1 Microchip Technology Inc IC MCU 8BIT 8KB FLASH 32TQFP

ECAD模型

下載ECAD模型
$1.5 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜