#【YashanDB认证】#YCA的学习过程总结-之崖山数据库初体验

概述

       前段时间崖山数据库做推广活动,参加了yca的考试,为啥参加这个数据库厂商的学习呢,因为目前这个数据库最像Oracle,又听公司的前辈说呢,这个公司的前身是华为人出来做的数据库,华为人的精神呢,我是比较信服的,是一帮子做事的人。所以呢就开始了学习,也初步体验一下,大概就是体验到能安装完成一个单机个人版的学习环境,然后创建测试表,再然后看看执行计划,建立个索引这些基础的体验项目。

      安装过程,请参见YashanDB服务端个人版安装部署-CSDN博客,这个博客我看着算是比较完成的安装过程。我这里就赘述了。

基础运维操作

部署实例

cd /home/yashan/install
./bin/yasboot cluster deploy -t yashandb.tomlyashandb.toml 实例文件的配置文件,规定了哪个data 目录,以及实例名字等。[yashan@Kylin69 install]$ cat yashandb.toml
cluster = "yashandb"
create_simple_schema = false
uuid = "666ef6a05088db684227fee09dbb3a1e"
yas_type = "SE"[[group]]group_type = "db"name = "dbg1"[group.config]CHARACTER_SET = "utf8"ISARCHIVELOG = trueREDO_FILE_NUM = 4REDO_FILE_SIZE = "128M"[[group.node]]data_path = "/data/yashan/yasdb_data"hostid = "host0001"role = 1[group.node.config]CGROUP_ROOT_DIR = "/sys/fs/cgroup"LISTEN_ADDR = "10.203.13.69:1688"REPLICATION_ADDR = "10.203.13.69:1689"RUN_LOG_FILE_PATH = "/data/yashan/yasdb_home/yashandb/23.2.4.100/log/yashandb/db-1-1/run"RUN_LOG_LEVEL = "INFO"SLOW_LOG_FILE_PATH = "/data/yashan/yasdb_home/yashandb/23.2.4.100/log/yashandb/db-1-1/slow"
[yashan@Kylin69 install]$

删除实例

yasboot cluster clean --cluster yashandb --purge

重新创建实例

pwd
/home/yashan/install./bin/yasboot cluster deploy -t yashandb.toml--查看实例状态
yasboot cluster status -c yashandb
--停止实例
yasboot cluster stop  -c yashandb
--重新启动实例
yasboot process yasom      start -c yashandb
yasboot process yasagent  start -c yashandb
yasboot cluster  start -c yashandb

 环境变量设置

./bin/yasboot cluster deploy -t yashandb.toml
cd /data/yashan/yasdb_home/yashandb/23.2.4.100/conf
cat yashandb.bashrc >> ~/.bashrc
source ~/.bashrc

修改管理员密码

yasboot cluster password set -n  Swg_202408  -c yashandb
yasboot cluster status -c yashandb
yasql sys/Swg_202408

解锁普通用户

yasql sys/Swg_202408
--解锁MDSYS用户,并将该用户的密码设置为Swg_202408
alter user  MDSYS account unlock identified by Swg_202408;
--授权角色给用户MDSYS
grant create session to MDSYS;
grant dba to MDSYS;
--在yasql状态下切换用户到MDSYS
conn  MDSYS/Swg_202408

 这dba_users 视图对于从Oracle转换过dba 算是比较友好的。使用上面的命令就可以切换到MDSYS用户。

创建应用表

       我们还是创建最常见的Oracle的scott三个表,部门表dept,员工信息表emp,职级表salgrade

相关的DDL代码如下

CREATE TABLE dept(deptno INT PRIMARY KEY,dname VARCHAR(14),loc VARCHAR(13)
);CREATE TABLE emp
(EMPNO INT(4) PRIMARY KEY,ENAME VARCHAR(10),JOB VARCHAR(9),MGR INT(4),HIREDATE DATE,SAL DOUBLE,COMM DOUBLE,deptno INT,
FOREIGN KEY (deptno) REFERENCES dept(deptno));CREATE TABLE  salgrade (grade INT PRIMARY KEY,losal INT,hisal INT);INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
INSERT INTO dept VALUES (30,'SALES','CHICAGO');
INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON');
--yasql 自动提交默认是关闭的
commit;
INSERT INTO salgrade VALUES(1,700,1200);
INSERT INTO salgrade VALUES(2,1201,1400);
INSERT INTO salgrade VALUES(3,1401,2000);
INSERT INTO salgrade VALUES(4,2001,3000);
INSERT INTO salgrade VALUES(5,3001,9999);
--yasql 自动提交默认是关闭的
commit;
INSERT INTO emp VALUES (7369,'SMITH','CLERK',7902,DATE('1980-12-17'),800,NULL,20);
INSERT INTO emp VALUES (7499,'ALLEN','SALESMAN',7698,DATE('1981-2-20'),1600,300,30);
INSERT INTO emp VALUES (7521,'WARD','SALESMAN',7698,DATE('1981-2-22'),1250,500,30);
INSERT INTO emp VALUES (7566,'JONES','MANAGER',7839,DATE('1981-4-2'),2975,NULL,20);
INSERT INTO emp VALUES (7654,'MARTIN','SALESMAN',7698,DATE('1981-9-28'),1250,1400,30);
INSERT INTO emp VALUES (7698,'BLAKE','MANAGER',7839,DATE('1981-5-1'),2850,NULL,30);
INSERT INTO emp VALUES (7782,'CLARK','MANAGER',7839,DATE('1981-6-9'),2450,NULL,10);
INSERT INTO emp VALUES (7788,'SCOTT','ANALYST',7566,DATE('1987-4-19'),3000,NULL,20);
INSERT INTO emp VALUES (7839,'KING','PRESIDENT',NULL,DATE('1981-11-17'),5000,NULL,10);
INSERT INTO emp VALUES (7844,'TURNER','SALESMAN',7698,DATE('1981-9-8'),1500,0,30);
INSERT INTO emp VALUES (7876,'ADAMS','CLERK',7788,DATE('1987-5-23'),1100,NULL,20);
INSERT INTO emp VALUES (7900,'JAMES','CLERK',7698,DATE('1981-12-3'),950,NULL,30);
INSERT INTO emp VALUES (7902,'FORD','ANALYST',7566,DATE('1981-12-3'),3000,NULL,20);
INSERT INTO emp VALUES (7934,'MILLER','CLERK',7782,DATE('1982-1-23'),1300,NULL,10);
--yasql 自动提交默认是关闭的
commit;--清楚数据的
delete from emp;
delete from salgrade;
delete from dept;
--查看数据
select *  from emp;
select *  from salgrade;
select *  from dept;

简单进行了SQL语句的执行计划的查看

SQL> explain select e.EMPNO,e.ENAME,e.JOB from dept d,emp e   where  d.DEPTNO=e.DEPTNO;PLAN_DESCRIPTION
----------------------------------------------------------------
SQL hash value: 3510891856
Optimizer: ADOPT_C+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+
| Id | Operation type                 | Name                 | Owner      | Rows     | Cost(%CPU)  | Partition info                 |
+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+
|  0 | SELECT STATEMENT               |                      |            |          |             |                                |
|  1 |  NESTED INDEX LOOPS INNER      |                      |            |    100000|      165( 0)|                                |
|  2 |   TABLE ACCESS FULL            | EMP                  | MDSYS      |    100000|      126( 0)|                                |
|* 3 |   INDEX UNIQUE SCAN            | SYS_C_23             | MDSYS      |         1|        1( 0)|                                |
+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+Operation Information (identified by operation id):
---------------------------------------------------3 - Predicate : access("D"."DEPTNO" = "E"."DEPTNO")16 rows fetched.SQL>

通过hint影响SQL的执行计划

LEADING

      LEADING语法能够改变Join两边表的顺序,常见做法是通过LEADING调整大小表,减少扫描数量;或通过LEADING调整表连接顺序,增加选择率,减少执行负担。


SQL> create table t1(t1_id int,t1_name varchar(50));Succeed.SQL> create table t2(t2_id int,t2_name varchar(50));Succeed.SQL> explain select  * from t1,t2  where  t1.t1_id=t2.t2_id;PLAN_DESCRIPTION
----------------------------------------------------------------
SQL hash value: 1636752117
Optimizer: ADOPT_C+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+
| Id | Operation type                 | Name                 | Owner      | Rows     | Cost(%CPU)  | Partition info                 |
+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+
|  0 | SELECT STATEMENT               |                      |            |          |             |                                |
|* 1 |  HASH JOIN INNER               |                      |            |    100000|      354( 0)|                                |
|  2 |   TABLE ACCESS FULL            | T1                   | MDSYS      |    100000|      121( 0)|                                |
|  3 |   TABLE ACCESS FULL            | T2                   | MDSYS      |    100000|      121( 0)|                                |
+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+Operation Information (identified by operation id):
---------------------------------------------------1 - Predicate : access("T1"."T1_ID" = "T2"."T2_ID")16 rows fetched.SQL> explain select /*+LEADING(t1,t2)*/  * from t1,t2  where  t1.t1_id=t2.t2_id;PLAN_DESCRIPTION
----------------------------------------------------------------
SQL hash value: 3417037079
Optimizer: ADOPT_C+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+
| Id | Operation type                 | Name                 | Owner      | Rows     | Cost(%CPU)  | Partition info                 |
+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+
|  0 | SELECT STATEMENT               |                      |            |          |             |                                |
|* 1 |  HASH JOIN INNER               |                      |            |    100000|      354( 0)|                                |
|  2 |   TABLE ACCESS FULL            | T1                   | MDSYS      |    100000|      121( 0)|                                |
|  3 |   TABLE ACCESS FULL            | T2                   | MDSYS      |    100000|      121( 0)|                                |
+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+Operation Information (identified by operation id):
---------------------------------------------------1 - Predicate : access("T1"."T1_ID" = "T2"."T2_ID")16 rows fetched.SQL> explain select /*+LEADING(t2,t1)*/  * from t1,t2  where  t1.t1_id=t2.t2_id;PLAN_DESCRIPTION
----------------------------------------------------------------
SQL hash value: 2731071767
Optimizer: ADOPT_C+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+
| Id | Operation type                 | Name                 | Owner      | Rows     | Cost(%CPU)  | Partition info                 |
+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+
|  0 | SELECT STATEMENT               |                      |            |          |             |                                |
|* 1 |  HASH JOIN INNER               |                      |            |    100000|      354( 0)|                                |
|  2 |   TABLE ACCESS FULL            | T2                   | MDSYS      |    100000|      121( 0)|                                |
|  3 |   TABLE ACCESS FULL            | T1                   | MDSYS      |    100000|      121( 0)|                                |
+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+Operation Information (identified by operation id):
---------------------------------------------------1 - Predicate : access("T2"."T2_ID" = "T1"."T1_ID")16 rows fetched.SQL>
SQL> explain select  * from t1,t2  where  t1.t1_id=t2.t2_id;PLAN_DESCRIPTION
----------------------------------------------------------------
SQL hash value: 1636752117
Optimizer: ADOPT_C+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+
| Id | Operation type                 | Name                 | Owner      | Rows     | Cost(%CPU)  | Partition info                 |
+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+
|  0 | SELECT STATEMENT               |                      |            |          |             |                                |
|* 1 |  HASH JOIN INNER               |                      |            |    100000|      354( 0)|                                |
|  2 |   TABLE ACCESS FULL            | T1                   | MDSYS      |    100000|      121( 0)|                                |
|  3 |   TABLE ACCESS FULL            | T2                   | MDSYS      |    100000|      121( 0)|                                |
+----+--------------------------------+----------------------+------------+----------+-------------+--------------------------------+Operation Information (identified by operation id):
---------------------------------------------------1 - Predicate : access("T1"."T1_ID" = "T2"."T2_ID")16 rows fetched.SQL>

 

后记

如果各位有兴趣,可以参加一下崖山yca认证,通过官方的体系培训,跟价深入的去了解这款比较新的国产化数据库。以下是官网yca的链接。YashanDB|崖山数据库系统YashanDB学习中心-YCA认证详情

ps:今天就先体验到这里了,等以后再有时间再续写这篇博客。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1112.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

UE 引入 IOS framework库的坑

一、我明明已经把framework库进行签名的却在 上传到开发者后台时一直报错 90034 签章遗失 或者 未签 这个问题我最近遇到 极其坑爹 我是这个情况 这是我的framework库的目录 关键就在这了 多出了这个文件 就影响了 上传到开发者后台 就报错 90034 将其删除就好 &…

使用Service Worker实现离线应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Service Worker实现离线应用 引言 Service Worker 简介 注册和激活 Service Worker 注册 Service Worker 激活 Service Work…

【Spring IoCDI】IoC容器,IoC注解,Bean的使用

【Spring核心思想:IoC】 spring是一个开源框架,支持广泛的应用场景,简而言之:Spring是包含了众多工具方法的IoC容器 【IoC】 IoC的意思是「控制反转」,也就是说Spring是一个“控制反转”的容器 通用程序的实现代码,类的创建顺序…

docker 可用镜像服务地址(2024.10.31亲测可用)

1.错误 Error response from daemon: Get “https://registry-1.docker.io/v2/” 原因:镜像服务器地址不可用。 2.可用地址 编辑daemon.json: vi /etc/docker/daemon.json内容修改如下: {"registry-mirrors": ["https://…

200smart怎么通过4G网络与wincc通讯

smart的PLC距离监控室距离比较,要在监控中心使用wincc组态来远程控制,物联网技术已经非常成熟,通过4G无线网络部署速度最快,成本最低,且稳定性可靠性已经完全满足工控技术需求。那200smart是怎样通过4G网络与wincc通讯…

Git学习记录

文章目录 一、版本控制工具1.1、集中式版本控制工具1.2、分布式版本控制工具 二、Git安装与常用命令2.1、Git环境配置2.2、基础操作指令2.2、分支2.2.1、基本指令2.2.2、合并冲突 三、Git远程仓库3.1、添加和查看远程仓库3.2、推送到远程仓库3.3、从远程仓库克隆3.4、从远程仓库…

如何打开/关闭 GitLab 的版本检查功能?

本文分享如何打开/关闭 GitLab 的版本检查功能。 极狐GitLab 是 GitLab 的中国发行版【https://dl.gitlab.cn/ncecn6kb】,中文版本对中国用户更友好,文章以私有化部署的极狐GitLab 实例来演示版本检查功能的开启和关闭。强烈不建议关闭该功能&#xff0…

Docker入门系列——网络

Docker 通过容器化应用程序,彻底改变了我们构建、分发和运行应用程序的方式。然而,有效使用 Docker 的一个关键方面是理解容器如何相互通信以及与外界通信。 1. 什么是 Docker 网络? Docker 网络允许容器相互通信以及与外部资源通信。默认情况…

20241029软考架构-------软考案例9答案

每日打卡题案例9答案 【2014年真题】 难度:简单 请详细阅读有关软件架构评估方面的说明,回答下列问题。(25分) 【说明】 某电子商务公司拟升级目前正在使用的在线交易系统,以提高客户网上购物时在线支付环节的效率和安…

双分解+一区极光优化+Transformer!CEEMDAN-Kmeans-VMD-PLO-Transformer多元时序预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CEEMDAN-Kmeans-VMD-PLO-Transformer融合K均值聚类的数据双重分解极光优化Transformer多元时间序列预测(完整源码和数据) 2.CEEMDAN分解,计算样本熵,根据样…

2024 CSS保姆级教程二 - BFC详解

前言 - CSS中的文档流 在介绍BFC之前,需要先给大家介绍一下文档流。​ 我们常说的文档流其实分为定位流、浮动流、普通流三种。​ ​ 1. 绝对定位(Absolute positioning)​ 如果元素的属性 position 为 absolute 或 fixed,它就是一个绝对定位元素。​ 在…

el-table 滚动条重置 手动控制滚动条

最近在使用 el-table 的时候,出现一个问题: 表头过长的时候,会有左右滑动的操作,当我们把表格拉到最右侧,这个时候重新请求数据的话,表格位置还是在最右侧,不会恢复原位。 那我们想恢复原位&a…

【Android】View的事件分发机制

文章目录 分发顺序ActivityViewGroupView 协作方法整体流程注意 Activity事件分发ViewGroup事件分发View点击事件总结 分发顺序 Activity->ViewGroup->View Activity 分发事件:Activity 通过 dispatchTouchEvent 方法分发事件,首先尝试将事件传递…

基于vue框架的的考研网上辅导系统ao9z7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:学生,公告信息,课程分类,考研资料,考研视频,课程信息,院校建议,教师 开题报告内容 基于Vue框架的考研网上辅导系统开题报告 一、研究背景与意义 随着高等教育的普及和就业竞争的加剧,考研已成为众多大学生提升学历、增强就…

分析 std::optional 的使用与常见错误

文章目录 引言常见错误及解决方案1. 错误使用 std::optional 变量进行算术运算2. 错误检查 std::optional 是否有值3. 忽视 std::optional 的默认值 结论 引言 std::optional 是 C17 引入的一个模板类,用于表示可能有也可能没有值的情况。它特别适用于函数返回值&a…

本地搭建php包依赖管理工具,使用satis搭建私有composer仓库

一、总体设计 dns服务器nginxsatis web 静态页面satis manage 管理程序 二、nginx配置 1、nginx.conf # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://ngi…

软件测试学习笔记丨SeleniumPO模式

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22525 本文为霍格沃兹测试开发学社的学习经历分享,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 说明:本篇博客基于sel…

Ubuntu-22.04 虚拟机安装

1. Ubuntu安装方式 1.1. 基于物理介质安装 光盘安装:通过将 Ubuntu 镜像刻录到光盘,在计算机 BIOS/UEFI 中设置光盘为第一启动项,然后按照安装程序的提示进行语言选择、分区、用户信息设置等操作来完成安装。这种方式需要有光盘刻录设备和空…

软件设计师-上午题-12、13 软件工程(11分)

软件工程题号一般为17-19和29-36题,分值一般为11分。 目录 1 软件过程 1.1 CMM(能力成熟度模型) 1.1.1 真题 1.2 CMMI(能力成熟度模型集成) 1.2.1 真题 2 软件过程模型 2.1 瀑布模型 2.2 V模型 2.2.1 真题 2.3 增量模型 2.3.1 真题 2.4 演化模型 2.5 …

Bartender 5 for Mac 菜单栏管理软件 安装教程【保姆级教程,操作简单小白轻松上手使用】

Mac分享吧 文章目录 Bartender 5 for Mac 菜单栏管理软件 安装完成,软件打开效果一、Bartender 5 菜单栏管理软件 Mac电脑版——v5.2.3⚠️注意事项:1️⃣:下载软件2️⃣:安装软件3️⃣:打开软件,根据自己…