OceanBase初试
OceanBase是原生分布式关系数据库软件,开源已经有些日子了,一直拖着没有做一些测试。这两天刻意抽时间做了下测试,还是挺惊喜的。
我是比较喜欢上手试验的风格,所以我的学习模式是先构建出一个简单的环境,然后根据自己的认知去做一些测试来决定要不要继续深入测试,然后再来看相关的文档来系统学习,所以我根据文档的描述初步选定是体验试用版本。
OceanBase的试用版链接已经失效了,在官方文档中没有及时更新,我是翻箱倒柜在网络上找了很多的文章和说明,才发现通过一个链接入口可以直达试用版:
https://www.oceanbase.com/download
根据链接跳转到的界面是这样的,这个对应不是最新的版本,不过作为体验测试是足够了。
比较贴心的是在试用版的相关文档中有一个视频,演示了整个部署的过程,几个命令即可搞定。
我们先来创建用户admin和相关的数据目录# useradd admin # passwd admin # mkdir /data/ob # chown -R admin.admin /data/ob
接下来修改配置文件config.py,修改相应的数据目录load("obi,obt-patch,mini-mode,sample-db,sysbench") if not indocker(): home = "/data/ob" obs_cfg.update(mini_mode_cfg) obs_cfg.update(system_memory="5G", memory_limit="8G", datafile_size="10G")# 定义一个单server的ob集群,mysql端口号2881,rpc端口号2882 ob1 = OBI("127.0.0.1:2882:2881")# 定义另一个单server的ob集群,mysql端口号/rpc端口号由uid hash生成 ob2 = OBI("127.0.0.1")# 单个机器上起3个observer ob3 = OBI("127.0.0.1@[z1,z2,z3]", dev="lo", is_local=True)
接下来切换到admin用户,开始安装nbsp;./hap.py ob1.reboot
大概1分钟左右即可搞定试用版的部署。
连接至OB环境可以使用hap.py脚本nbsp;./hap.py ob1.obmysql Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 3221487878Server version: 5.7.25 OceanBase 2.2.50 (r1-1c6441e8fb858c80da395f934f67ed305425864e) (Built Mar 6 2020 18:41:01) Copyright (c) 2009-2020 Percona LLC and/or its affiliates Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners. Type "help;" or "h" for help. Type "c" to clear the current input statement.OceanBase(root@oceanbase)>
有一种无缝使用MySQL的感觉,目前这个版本(2.2.50)支持的是5.7的相关协议,查看使用版本。OceanBase(root@SYS)>select * from v$version;+---------------------------------------------------------------------------------------------+--------+| BANNER | CON_ID |+---------------------------------------------------------------------------------------------+--------+| OceanBase 2.2.50 (r1-1c6441e8fb858c80da395f934f67ed305425864e) (Built Mar 6 2020 18:41:01) | 0 |+---------------------------------------------------------------------------------------------+--------+1 row in set (0.00 sec)
查看数据库列表,可以看到基本保持了MySQL的风格,当然也有Oracle的影子,看文档的描述是按照租户的模式来设计的。OceanBase(root@test)>show databases; +--------------------+ | Database | +--------------------+ | oceanbase | | information_schema | | mysql | | SYS | | LBACSYS | | ORAAUDITOR | | test | +--------------------+ 7 rows in set (0.00 sec)
那存储引擎是怎么体现的呢,在这里存储引擎就是OceanBase,支持事务。OceanBase(root@test)>show engines; +-----------+---------+-----------------------+--------------+----+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +-----------+---------+-----------------------+--------------+----+------------+ | OceanBase | YES | Supports transactions | YES | NO | NO | +-----------+---------+-----------------------+--------------+----+------------+ 1 row in set (0.01 sec)
我们创建一张表,来看看原本MySQL的语法是否适用。
OceanBase(root@test)>CREATE TABLE `data_detail_202107` ( -> `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT "id", ... -> `value` int(11) NOT NULL DEFAULT "0" COMMENT "数据值", -> `modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改时间", -> `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", -> `note` varchar(255) NOT NULL DEFAULT "" COMMENT "备注", -> PRIMARY KEY (`id`), -> KEY `idx_rlb_id` (`rlb_id`,`cycle_num`,`member_id`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="数据明细表"; Query OK, 0 rows affected, 1 warning (0.16 sec)
没想到还是执行成功了,只是抛出了警告。OceanBase(root@test)>show warnings; +---------+------+---------------------------------+ | Level | Code | Message | +---------+------+---------------------------------+ | Warning | 1286 | Unknown storage engine "InnoDB" | +---------+------+---------------------------------+ 1 row in set (0.00 sec)
数据字典有一个视图views,完整的SQL语句是比较长的,我们来查看执行计划,直接使用了Hash Join>explain select * from viewsG *************************** 1. row *************************** Query Plan: ==================================== |ID|OPERATOR |NAME|EST. ROWS|COST| ------------------------------------ |0 |HASH JOIN | |156 |4566| |1 | TABLE SCAN|d |100 |2000| |2 | TABLE SCAN|t |100 |2000| ====================================
其实show create table是很有代表性的,可以通过这个看到很多OceanBase中的设计点。OceanBase(root@test)>show create table data_detail_202107G *************************** 1. row *************************** Table: data_detail_202107 Create Table: CREATE TABLE `data_detail_202107` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT "id", … `value` int(11) NOT NULL DEFAULT "0" COMMENT "数据值", `modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改时间", `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", `note` varchar(255) NOT NULL DEFAULT "" COMMENT "备注", PRIMARY KEY (`id`), KEY `idx_rlb_id` (`rlb_id`, `cycle_num`, `member_id`) BLOCK_SIZE 16384 GLOBAL) AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = "zstd_1.0" REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 COMMENT = "数据明细表"1 row in set (0.01 sec)
文档中关于Oracle和MySQL的兼容性是比较高的,那么业务就可以最大程度的使用两者的特性功能,总体来说和补充的测试和文档来看,还是有不少的期待。
视频龙珠英雄创成篇大结局,贝吉特VS超弗视频将以文章视频的形式展现给大家,也就是在我个人主页文章下可以看到全部的视频。非常感谢大家。以下是龙珠英雄创成篇大结局贝吉特VS超弗视频!!以下是龙珠英雄创成篇大结局贝吉特VS超弗
视频龙珠英雄,特别篇,暗黑魔界篇视频将以文章视频的形式展现给大家,也就是在我个人主页文章下可以看到全部的视频。非常感谢大家。以下是龙珠英雄特别篇暗黑魔界篇视频,特别篇是宇宙创成篇的背景介绍视频加载中龙珠英雄是根据
嘉兴不明物体是陨冰或者蓝冰?浙江嘉兴上空掉下不明物体当地有关部门挖了1。5米,没有找到任何固体,难道是陨冰或者蓝冰?这两者都是可溶物,接触地面不久就能融化。陨冰是彗星表面溅射出来的冰块,被地球引力捕获后,砸向
天问一号探索的是火星吗?不,它探索的是人类的未来最近几年中美都热衷于探索火星,不管是马斯克的公司行为,还是中国举国之力的国家行为,都奔着去了解去发现最终去登陆火星的目标而去。为什么大家都要去探索火星,仅仅是为了好奇吗?不,我们在
香港闹市的自行车道香港的闹市里,有一条自行车道。蜿蜿蜒蜒的,从大围一直延伸到吐露港,跟着大围城门河的河水一起奔向大海。大围地铁站A出口是它的起点。走出大围地铁口,就看到马路边上有一排自行车停在马路边
悬空寺真悬空吗?今天参观北魏名寺恒山悬空寺。悬空寺建于北魏初年,距今1500年历史,是第一座佛道儒三教合一的寺庙。悬空寺距地面约60米,20层楼高。它真的悬空吗?从现场看,只有十几根细细的柱子支撑
杭州网约车女子跳车背后的原因是什么?6月12日,杭州高女士自称乘车时遭网约车司机搭讪,且司机两次更改路线,最后导致她跳车摔伤。网上男女网友站成两队,男的说女的是受害妄想症,女的说司机不按导航走就是有问题,其实是男女双
新希望刘畅谈富可以过三代?刘畅最近在访谈节目谈自己的孩子,说相信他们养活自己是没问题的,我的小孩不会富不过三代的,凭他们的知识水平能养活自己,他们自己有钱,有知识,有自己的精神就不会不富。达尔文的表弟,英国
携程梁建章建议取消中考,这种看法对吗?携程梁建章认为,每个孩子的成熟期不一样,过早分层会导致那些晚熟的孩子遭遇错误的评判。美国心理学家卡特尔把智力分为两种,一种是流体智力,另一种是晶体智力。流体智力是天生的智力,通过基
婴儿凉席4步挑选法绝不掉坑在给宝宝挑选凉席的时候妈妈们是不是都非常纠结不知道买那种那大家可以遵循一测二看三摸四闻这几个小原则一测测量婴儿床的尺寸选择购入合适的凉席不宜过大或过小否则宝宝睡觉时凉席容易移位影响
国人为什么不再唯金牌论了?东京奥运会上,即使被淘汰的没有任何奖牌的运动员,国人也是鼓励称赞肯定,国人为何不再唯金牌论了?唯金牌论背后是人类炫耀的心理。炫耀是人从各个方面特意强调自己,包括外貌财富学识能力等。