• 正文
    • 一、MySQL/MariaDB
    • 二、Redis
    • 三、MongoDB
    • 四、PostgreSQL
    • 五、TiDB
    • 總結:
  • 推薦器件
  • 相關推薦
申請入駐 產業(yè)圖譜

RISC-V公測平臺發(fā)布 · 數(shù)據(jù)庫在RISC-V服務器上的適配評估

2023/08/18
2742
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

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

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

Redis

MongoDB5

PostgreSQL

TiDB

MySQL/MariaDB

實驗機配置如下:

處理器:SG2042(64核心)

內存:32GB

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

一、MySQL/MariaDB

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

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

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

sudo apt-get install mysql-server

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

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

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

sudo apt-get install mariadb-server

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

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

wget

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

進入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

啟動服務器并測試是否能連接數(shù)據(jù)庫服務器:

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編寫。是一個開源的、使用 ANSI C 語言編寫、遵守 BSD 協(xié)議、支持網(wǎng)絡、可基于內存、分布式、可選持久性的鍵值對(Key-Value)的存儲數(shù)據(jù)庫,并提供多種語言的 API。

Redis 通常被稱為數(shù)據(jù)結構服務器,因為值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等類型。

通過APT安裝Redis:

sudo apt install redis-server

然后啟動Redis服務:

sudo servcie redis-server start

進入redis-cli:

redis-cli

如果能進入Redis Shell那就說明安裝成功。

編譯安裝:

wget

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

解壓:

tar -xzvf 7.0.12.tar.gz

進入Redis文件夾:

cd redis-7.0.12/

編譯:

make BUILD_TLS=yes USE_SYSTEMD=yes -j64

測試一下(可選):

make test

安裝:

sudo make install

啟動服務器:

redis-server

redis-server &(后臺運行)

運行redis-benchmark壓力測試(10萬次請求,20個客戶端),以CSV文件形式輸出。

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

結果如下:

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

三、MongoDB

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

通過APT安裝MongoDB:

sudo apt install mongodb

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

下載源碼包:

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

解壓縮:

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

進入mongodb源碼文件夾:

cd mongodb-src-r6.0.8/

編譯:

python3 buildscripts/scons.py install-mongod -j64

結果編譯失敗:

在安裝相關的包以后,依舊無法編譯。

四、PostgreSQL

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

通過APT安裝:

apt-get install postgresql postgresql-client

測試一下:

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

進入:

cd postgresql-15.3/

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

編譯并安裝:

make world -j64

make install-world -j64

進入~/pg/

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

./bin/initdb -D ./data/

啟動數(shù)據(jù)庫:

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

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

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

bin/psql -U postgres -h localhost

(進入psql shell)

CREATE DATABASE test;

(退出psql shell)

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

bin/pgbench -i test

開始壓力測試:

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

壓力測試結果如下:

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 公司自主設計、研發(fā)的開源分布式關系型數(shù)據(jù)庫。該數(shù)據(jù)庫使用Go語言編寫。

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

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

結果編譯失敗:

同時也嘗試了通過腳本安裝,結果提示不支持該架構。

總結:

通過此次實驗,得出了以下結果。

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

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

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

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

參考資料:

MariaDB 簡介

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

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
ATXMEGA16A4U-AUR 1 Microchip Technology Inc IC MCU 8BIT 16KB FLASH 44TQFP

ECAD模型

下載ECAD模型
$2.86 查看
ATMEGA1284P-AU 1 Atmel Corporation RISC Microcontroller, 8-Bit, FLASH, AVR RISC CPU, 20MHz, CMOS, PQFP44, 10 X 10 MM, 1 MM HEIGHT, 0.80 MM PITCH, GREEN, PLASTIC, MS-026ACB, TQFP-44

ECAD模型

下載ECAD模型
$5.69 查看
ATXMEGA64A4U-MH 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, PQCC44, 7 X 7 MM, 1 MM HEIGHT, 0.50 MM PITCH, GREEN, PLASTIC, MO-220VKKD-3, VQFN-44
$4.89 查看

相關推薦