最近一家来自深圳某科学院的自研数据库发布会火了一下,从发布会来看数据库很强大,有单机版、共享集群版(即类似Oracle RAC)、分布式版本,一次性发布就如此多的版本,还是非常罕见的。
目前对于类似Oracle RAC的架构,国产数据库中据我了解也就最早浪潮的kdb、达梦有过类似架构,暂时还没有第三家出过类似基于共享存储的分布式架构。
这里我也简单体验了一把,目前官网只能下载个人测试版本,其安装也是非常的简单,分为命令行和web图形化两种方式,相对简单,这里不做过多描述。
1、首先我们来看下内存结构
_CLUSTER_ID=6553362c3d3cec527b2adf3484e0952c
NODE_ID=1-1:1
CONTROL_FILES=('/home/yashan/yasdb_home/yashandb/data/yashantest/db-1-1/dbfiles/ctrl1', '/home/yashan/yasdb_home/yashandb/data/yashantest/db-1-1/dbfiles/ctrl2', '/home/yashan/yasdb_home/yashandb/data/yashantest/db-1-1/dbfiles/ctrl3')
REPLICATION_ADDR=172.20.22.146:1689
RUN_LOG_FILE_PATH=/home/yashan/yasdb_home/yashandb/23.1.1.100/log/yashantest/db-1-1/run
RUN_LOG_LEVEL=INFO
SLOW_LOG_FILE_PATH=/home/yashan/yasdb_home/yashandb/23.1.1.100/log/yashantest/db-1-1/slow
CHARACTER_SET=UTF8
LISTEN_ADDR=172.20.22.146:1688
DATA_BUFFER_SIZE = 8709M
VM_BUFFER_SIZE = 1111M
WORK_AREA_STACK_SIZE = 2M
WORK_AREA_POOL_SIZE = 64M
WORK_AREA_HEAP_SIZE = 512K
SHARE_POOL_SIZE = 1111M
LARGE_POOL_SIZE = 176M
MAX_PARALLEL_WORKERS = 32
SCOL_DATA_BUFFER_SIZE = 128M
SCOL_DATA_PRELOADERS = 2
COLUMNAR_WORK_AREA_HEAP_SIZE = 32M
COLUMNAR_VM_BUFFER_SIZE = 128M
COLUMNAR_BULK_SIZE = 1024
COMPRESSION = LZ4
PQ_POOL_SIZE = 128M
MAX_SESSIONS = 1024
MAX_WORKERS = 0
TAB_QUEUE_WINDOW_SIZE = 4
BLOOM_FILTER_FACTOR = 0.3
DEGREE_OF_PARALLEL = 1
MMS_DATA_LOADERS = 8
CHECKPOINT_INTERVAL = 256M
CHECKPOINT_TIMEOUT = 60
REDOFILE_IO_MODE = DSYNC
DATAFILE_IO_MODE = DEFAULT
COMMIT_LOGGING = BATCH
RECOVERY_PARALLELISM = 8
REDO_BUFFER_SIZE = 32M
从上述参数文件(类似Oracle pfile,可进行编辑,非二进制),崖山数据库的内存结构主要包括如下几个方面:
data_buffer_size 类似oracle buffer pool
vm_buffer_size 类似oracle hash_area_Size之类
work_area_stack_size loader相关操作需要配置的参数
work_area_pool_size
work_area_heap_size
share_pool_size 类似oracle share pool,用于缓冲sql和执行计划等
large_pool_size 看上去类似oracle large pool
SCOL_DATA_BUFFER_SIZE
PQ_POOL_SIZE 看上去主要用于parallel query相关操作
REDO_BUFFER_SIZE 类似Oracle log buffer
从上述参数并结合v$parameter来看,目前崖山数据库对于内存而言,需要进行手动调整,暂不支持oracle sga target之类的自动调节优化技术。对于一个比较关键的核心系统而言,上述一些内存参数可能都需要不断优化可能才能达到一个最佳状态。
2、其次我们来看下进程结构
[yashan@yashandb1 ~]$ ps -ef|grep yasdb_home|grep -v grep
yashan 25453 1 0 Nov15 ? 00:04:19 home/yashan/yasdb_home/yashandb/23.1.1.100/bin/yasom -c yashantest -l 172.20.22.146:1675 -d
yashan 25509 1 0 Nov15 ? 00:02:54 home/yashan/yasdb_home/yashandb/23.1.1.100/bin/yasagent -c yashantest -l 172.20.22.146:1676 -d
yashan 25642 1 8 Nov15 ? 02:30:07 home/yashan/yasdb_home/yashandb/23.1.1.100/bin/yasdb open -D home/yashan/yasdb_home/yashandb/data/yashantest/db-1-1
[yashan@yashandb1 ~]$
从进程上来看,我们可以看出崖山数据库是单进程多线程模式,类似MySQL、openGauss、MogDB、达梦等数据库。那么崖山究竟都有哪些线程呢?
SQL> select name,count(1) from v$process group by name order by 2;
NAME COUNT(1)
--------------------------------- ---------------------
BUFFER_POOL 1
CKPT 1
SCHD_TIMER 1
LISTENER_LOG 1
ARCH_DATA 1
HEALTH_MONITOR 1
LOGW 1
MMS_PRELOAD 1
XFMR_WORKER_0 1
JOB_QUEUE 1
XFMR_WORKER_2 1
XFMR_WORKER_4 1
XFMR_WORKER_6 1
XFMR_WORKER_8 1
XFMR_WORKER_10 1
XFMR_WORKER_12 1
XFMR_WORKER_14 1
XFMR_WORKER_16 1
XFMR_WORKER_18 1
XFMR_WORKER_20 1
XFMR_WORKER_22 1
XFMR_WORKER_24 1
XFMR_WORKER_26 1
XFMR_WORKER_28 1
XFMR_WORKER_30 1
WORKER 1
XFMR_WORKER_31 1
XFMR_WORKER_29 1
XFMR_WORKER_27 1
XFMR_WORKER_25 1
XFMR_WORKER_23 1
XFMR_WORKER_21 1
XFMR_WORKER_19 1
XFMR_WORKER_17 1
XFMR_WORKER_15 1
XFMR_WORKER_13 1
XFMR_WORKER_11 1
XFMR_WORKER_9 1
XFMR_WORKER_7 1
XFMR_WORKER_5 1
XFMR_WORKER_3 1
XFMR_WORKER_1 1
MMON 1
XFMR 1
GARBAGE_PURGE 1
HOT_CACHE_RECYC 1
RD_ARCH 1
SMON 1
TIMER 1
DBWR 2
ROLLBACK 2
PRELOADER 2
TCP_LSNR 3
53 rows fetched.
从上面结果来看,崖山也具备DBWR,SMON,MMON,CKPT,LSNR,ARCH等相关线程,其中也有很多不太一样的地方。比如rollack线程、preloader等。
3、从文件结构看
简单看了一下崖山数据库实例的文件分布,大概如下:
[yashan@yashandb1 db-1-1]$ ls -ltr
total 0
drwxr----- 3 yashan yashan 20 Nov 14 16:58 external
drwxr----- 2 yashan yashan 6 Nov 14 16:58 backup
drwxr----- 8 yashan yashan 105 Nov 14 16:58 log
drwxr----- 5 yashan yashan 60 Nov 14 16:58 diag
drwxr----- 2 yashan yashan 6 Nov 14 17:00 data
drwxr----- 3 yashan yashan 19 Nov 14 17:01 local_fs
drwxr----- 2 yashan yashan 185 Nov 14 17:01 dbfiles
drwxr----- 2 yashan yashan 23 Nov 14 17:01 config
drwxrwxr-x 2 yashan yashan 6 Nov 15 14:18 tmp
drwxr----- 2 yashan yashan 75 Nov 15 14:18 instance
drwxr----- 2 yashan yashan 66 Nov 15 14:18 archive
[yashan@yashandb1 db-1-1]$ cd dbfiles/
[yashan@yashandb1 dbfiles]$ ls -tlr
total 2826840
-rw-r----- 1 yashan yashan 536870912 Nov 14 17:01 redo1
-rw-r----- 1 yashan yashan 536870912 Nov 15 14:02 redo2
-rw-r----- 1 yashan yashan 67108864 Nov 15 14:18 temp
-rw-r----- 1 yashan yashan 67108864 Nov 15 14:18 swap
-rw-r----- 1 yashan yashan 536870912 Nov 15 14:18 redo3
-rw-r----- 1 yashan yashan 67108864 Nov 16 02:20 users
-rw-r----- 1 yashan yashan 536870912 Nov 16 19:30 redo4
-rw-r----- 1 yashan yashan 67108864 Nov 16 19:30 system
-rw-r----- 1 yashan yashan 67108864 Nov 16 19:30 sysaux
-rw-r----- 1 yashan yashan 268435456 Nov 16 19:30 undo
-rw-r----- 1 yashan yashan 67108864 Nov 16 19:30 dwf
-rw-r----- 1 yashan yashan 25370624 Nov 16 19:30 ctrl1
-rw-r----- 1 yashan yashan 25370624 Nov 16 19:30 ctrl2
-rw-r----- 1 yashan yashan 25370624 Nov 16 19:30 ctrl3
相关的目录结构类似Oracle,可谓高度山寨,连diag,adr都有了。从数据文件来看,system、sysaux、temp、undo、control、redo都类似oracle。不过有一点不同的是居然有个单独的swap表空间,同时又还有temp,这里为还有点好奇,后续再深入研究一下。
4、自带工具
[yashan@yashandb1 bin]$ tree /home/yashan/yasdb_home/yashandb/23.1.1.100/bin
/home/yashan/yasdb_home/yashandb/23.1.1.100/bin
├── exp
├── imp
├── yasagent
├── yasbak
├── yasboot
├── yasdb
├── yasldr
├── yasom
├── yaspwd
├── yasql
├── yasrman
├── yaswrap
└── yex_server
0 directories, 13 files
从数据库安装完毕后bin下的工具来看,略微有点简单。不过数据加载、备份和数据导出导入的工具都是ok的,对于命名上也别致,继续山寨Oracle。
其他方面简单测试了表空间、用户管理等跟Oracle高度相似,更加深入测试稍后抽空在进行。




