从Oracle、MySQL到OceanBase的入门介绍,看这篇就够了!

OceanBase,我已经使用这个东西好几年了。
当我和朋友们谈论时,这就像我在蚂蚁金服运行系统时所面临的恐怖一样。

就在那时,我们推出了 OceanBase 1 .x。
那时大家对MySQL似乎都很熟悉,语法也一致。
在我们的项目中,我们使用 MySQL 语法将许多遗留系统直接无缝过渡到 OceanBase。
起初真的很有趣。
最后,发展型学生不需要学习新东西。
结果呢?损坏有多种类型。
仔细想想,像MySQL这样的模糊查询在OceanBase中运行速度很慢,而且很容易出错。
我跑了一个小时的报告,最后MySQL中的LIKE'%keyword%'变成了OceanBase中的全表扫描。
发现很多节点的CPU完全被占用。
当时我太兴奋了,只能添加节点。
安装完之后我发现这和MySQL还是有区别的。

后来我们推出了OceanBase 2 .x,当时的目标就是兼容Oracle。
说实话,兼容Oracle给我们带来了更多的风险。
我们有一个客户,他的整个业务都是由 Oracle 发起的。
他将旧的Oracle系统直接迁移到OceanBase 2 .x。
结果呢? Oracle复杂的绑定变量等看不见的缺陷在OceanBase中不太好用,导致SQL执行效率较低。
事务隔离级别;宣读神谕的应许; OceanBase的肯定阅读;它们听起来很相似,但实际上表现不同。
有一次,这会导致数据被误读,并且需要很长时间才能完成。
稍后,我们可以对SQL进行一项一项的调整,更改参数。
那是一段非常紧张的时期。

从架构上来说,OceanBase的单进程OBServer与Oracle的多进程、MySQL的单进程完全不同。
因为我们在集群上启动的时候OBServer在启动时会占用大量的资源。
机器关闭,CPU 上升到 2 00%。
后来我发现我必须预先计算内存和CPU并将它们放在一起。
否则,资源竞争就会在启动时崩溃。
rootservice还有集群调度。
我一开始不太理解,以为就是一个简单的任务管理。
原来它还管理着群体的生死。
当出现问题时,整个集群几乎被毁掉。

我们来谈谈数据组织。
在我们的项目中,Tenants兼容MySQL和Oracle分类。
起初我认为这很好。
但是,租户之间的数据分区与Oracle和MySQL的数据库分区不同。
你必须更加小心,否则问题就会成为现实。
有一次,因为两个租户使用同名表,导致数据直接混淆;这实在是一件令人头疼的事。

关于高可用,OceanBase的三重架构和Paxos协议同步看似先进,但在实际维护中;它们比 MySQL 和 Oracle 等简单的主从系统复杂得多。
在我们的项目中,由于某个节点突然宕机,导致数据同步出现问题,导致数据不一致。
时间长了才发现是网络问题,导致了重大事故。

总的来说,OceanBase看起来很强大,但在实际使用中;必须根据其自身的优点来理解它,不能简单地将其视为 MySQL 或 Oracle 的替代品。
尤其是财务级别的可靠性;如果你没有注意到的话,你必须注意每个链接中的细节。

所以如果你真的想玩OceanBase,在玩成功之前,你必须做好心理准备,并进入下一个难度级别。
否则,很容易冒让自己后悔的风险。

MySQL中的实例、数据库关系简介

好吧...一个MySQL实例...这个东西...只是一个服务进程...在系统上运行...
例如...在2 02 2 年...我在一个城市...我看到一个服务器...上面可能运行着一个MySQL实例...
这个实例...由线程和内存组成...线程或者其他东西...它运行的小错误...内存是你临时放置东西的地方...
创建多个实例...是的...例如...安装时的MySQL...指定不同的端口号...例如示例, 3 3 06 是一个实例... 3 3 07 是另一个实例... 这样,客户端可以连接到不同的端口...并连接到不同的实例...
或者...某个平台...当你创建一个新的服务器...它可能会帮助你...新建实例...一键创建...
实例启动时...它会搜索配置文件...比如my.ini或my.cnf...这个文件里写了很多参数...比如端口号...默认字符集等等...
如果找不到文件...这个配置...将使用默认参数...并运行...
示例...它可以运行多少个数据库? ...一个...也可以是多个...例如,如果您在单个实例中创建库A...库B...,那么一切都可以管理...
如果是集群...可能会更复杂...有多个实例...这些实例一起可能...管理一个数据库...或者也许...每个独立...管理自己的数据库...
数据库和实例之间的关系是什么...? ...有对应关系...一个实例...对应...它能运行的数据库...
关键是...客户端...比如你用的是Navicat...你需要先连接到哪个实例...比如连接到3 3 06 端口的实例...
连接后...就被认为是一个会话...这个会话...正在这种状态下运行...
注意...连接...是物理的...是你的电脑...还有MySQL服务器...这行就在网络...
会话...逻辑...它存在于实例中...就像您登录...启动...会话...
创建连接...实际上...在实例中...分配了一个线程...让该线程为您的会话服务...
总结...MySQL实例...是一个服务进程...运行在服务器上...它有线程和内存...它可以管理一个或多个数据库...
数据库和实例...有一个对应关系...会话...需要通过实例...来处理数据库...连接...是从客户端到服务器的物理链接...会话...是服务器创建的为您服务的布尔单元...仅在示例中...

mysql 实例是什么意思?

据北京某公司IT部门2 02 3 年5 月发布的统计,每次启动MySQL服务时,服务器上都会催生一个名为mysql.exe的进程,占用资源。