mysql mvcc解决什么问题?

61 2024-08-15 12:48

一、mysql mvcc解决什么问题?

解释说明如下:

MySQL的大多数事务型存储引擎实现的都不是简单的行级锁。基于提升并发性能的考虑,它们一般都同时实现了多版本并发控制(MVCC)。不仅仅是MySQL,包括Oracle,PostgreSQL等其他数据库系统也都实现了MVCC,但是各自的实现机制并不相同,因为MVCC并没有一个同一的标准。

可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低。大多数的MVCC都实现了非阻塞的读操作,写操作也只锁定必要的行。

MVCC的实现,是通过保存数据在某个时间点的快照来实现的。也就是说,不管需要执行多长时间,每个事务看到的数据是一致的。根据事务开始的时间不同,每个事物对同一张表,同一时刻看到的数据可能是不一样的。

不同存储引擎的MVCC实现是不同的,典型的有乐观(optimistic)并发控制和悲观(pessimistic)并发控制。

InnoDB的MVCC是通过在每行记录后面保存两个隐藏的列来实现。这两个列,一个保存了行的创建时间,一个保存了行的过期时间(删除时间)。并且存储的并不是真实的时间值,而是系统版本号(system version number)。每开始一个新的事务,系统版本号都会自动递增。事务开始时刻的系统版本号会作为事务的版本号,用来和查询到的每行记录的版本号进行比较。

二、mvcc是什么?

MVCC是多版本并发控制(Multi-Version Concurrency Control)的缩写。MVCC是一种数据库并发控制方法,它通过为每个数据行保存多个版本,允许多个事务同时读取同一行数据,避免了读取和修改锁的竞争。当一个事务要修改数据时,MVCC会为其创建一个新版本,并将新版本和旧版本做一个版本链,这样之前读取旧版本的事务仍然可以访问旧版本,而新事务读取新版本。MVCC可以提高数据库的并发性能,减小锁竞争带来的开销,常见于高并发场景下的关系型数据库系统,如MySQL的InnoDB引擎。

三、mysql视图能提高性能吗?

可以。

视图一般是由经常用到的查询语句创建的,也有部分相对复杂的查询语句。

普通的查询语句在执行时会先预编译,然后再执行。整个执行过程,预编译耗时占比较大。

如果将经常查询的语句,建成视图会减少预编译的次数,从而提高查询的性能。

四、高性能 mysql

高性能 MySQL:为什么它如此重要?

MySQL是当今世界上最受欢迎的开源关系型数据库管理系统之一。由于其简单易用性和可扩展性,它被广泛用于各种规模的应用程序和网站。然而,对于需要处理大量数据和高并发访问的应用来说,高性能的MySQL数据库变得至关重要。

优化数据库结构

要实现高性能的MySQL,首先需要优化数据库结构。这包括:

  • 范式化数据:通过将数据拆分为多个相关表,并使用外键关联它们,可以减少数据冗余并提高查询性能。
  • 选择适当的数据类型:选择适当的数据类型对于提高数据库的性能至关重要。尽量避免使用过大或过小的数据类型,以节省存储空间并加快查询。
  • 创建索引:索引可以大大提高数据库的查询性能。根据查询的列和频率,创建适当的索引以加速数据的检索。
  • 避免过多的关联:过多的表关联会增加数据库的负载,导致性能下降。在设计数据库时,尽量避免使用过多的关联。

优化查询语句

写出高效的查询语句是提高MySQL性能的关键。以下是一些优化查询语句的技巧:

  • 仅检索所需数据:避免使用SELECT *来检索所有列的数据,而是只选择需要的列。这可以减少网络传输和数据库的负载。
  • 使用LIMIT限制结果:如果只需要一部分结果,使用LIMIT子句来限制查询结果的数量。
  • 避免使用子查询:子查询会导致额外的查询和内存开销。尽量避免使用子查询,使用JOIN来优化查询。
  • 注意WHERE子句:将最限制性的条件放在WHERE子句的前面,以尽早筛选出不符合条件的数据。

配置优化

正确配置MySQL服务器也是提高性能的重要方面。以下是一些配置优化的建议:

  • 调整缓冲区:根据服务器的可用内存,合理设置key_buffer_size、innodb_buffer_pool_size等参数,以优化缓存性能。
  • 调整连接数:根据应用的并发访问数量,设置max_connections参数。太多的连接会影响性能,太少的连接可能导致连接被拒绝。
  • 启用慢查询日志:通过启用慢查询日志,可以找出执行时间较长的查询,进而进行优化。
  • 定期备份和优化:定期备份数据库并进行优化可以保持数据库的良好性能。

使用缓存和分区

缓存和分区是提高MySQL性能的有效手段。

缓存:通过使用缓存技术,可以将频繁访问的数据缓存在内存中,以加快查询速度。常用的缓存技术包括Memcached和Redis。

分区:当数据库表的数据量过大时,可以将数据分成多个分区进行存储。这样可以减轻数据库的负载,提高查询性能。

使用适当的存储引擎

MySQL支持多种存储引擎,如InnoDB、MyISAM等。选择合适的存储引擎对于提高数据库的性能至关重要。

InnoDB:对于需要事务支持和数据完整性的应用程序来说,InnoDB是一个不错的选择。它支持事务和行级锁定,具有较好的并发性。

MyISAM:对于主要是读取操作的应用来说,MyISAM是一个可选的存储引擎。它具有较快的读取速度,但不支持事务。

监控和调优

监控和调优是确保MySQL数据库持续高性能的关键。以下是一些监控和调优的技巧:

  • 使用性能监控工具:使用性能监控工具如MySQL Enterprise Monitor、Percona Toolkit等,可以监测数据库的性能指标,并进行调优。
  • 分析查询执行计划:使用EXPLAIN语句分析查询的执行计划,找出潜在的性能问题。
  • 定期优化表:使用OPTIMIZE TABLE命令可以重新组织表的物理存储,提高查询性能。

总结

高性能的MySQL数据库对于处理大数据量和高并发访问的应用来说至关重要。通过优化数据库结构、查询语句,合理配置服务器,使用缓存和分区,选择适当的存储引擎,以及进行监控和调优,可以提高MySQL的性能,确保应用程序的稳定运行。

五、深入浅出mysql和高性能mysql哪本好?

1、从书的内容做比较

《深入浅出MySQL》从数据库的基础、开发、优化、管理维护4个方面对MySQL进行了详细的介绍,其中每一部分都独立成篇。 基础篇主要适合于MySQL的初学者,内容包括MySQL的安装与配置、SQL基础、MySQL支持的数据类型、MySQL中的运算符、常用函数、图形化工具的使用等。 开发篇主要适合于MySQL的设计和开发人员,内容包括表类型(存储引擎)的选择、选择合适的数据类型、字符集、索引的设计和使用、视图、存储过程和函数、触发器、事务控制和锁定语句、SQL中的安全问题、SQL Mode及相关问题等。 优化篇主要适合于开发人员和数据库管理员,内容包括常用SQL技巧和常见问题、SQL优化、优化数据库对象、锁问题、优化 MySQL Server、磁盘I/O问题、应用优化等。 管理维护篇主要适合于数据库管理员,内容包括MySQL高级安装和升级、MySQL中的常用工具、MySQL 日志、备份与恢复、MySQL权限与安全、MySQL复制、MySQL Cluster、MySQL常见问题和应用技巧等。

《高性能MySQL(第2版)》荣获2009年Jolt图书大奖,是不可多得的分享MySQL实用经验的图书。它不但可以帮助MySQL初学者提高使用技巧,更为有经验的MySQL DBA指出了开发高性能MySQL应用的途径。《高性能MySQL(第2版)》包含14章和4个附录,内容覆盖MySQL系统架构、设计应用技巧、SQL语句优化、服务器性能调优、系统配置管理和安全设置、监控分析,以及复制、扩展和备份/还原等主题,每一章的内容自成体系,适合各领域技术人员作选择性的阅读。2、从适用性来讲 《深入浅出MySQL》融入了他们丰富的工作经验和多年的使用心得,还提供了大量来自工作现场的实例,具有很强的实战性和可操作性。适用于数据库管理人员、数据库开发人员、系统维护人员、数据库初学者及其他数据库从业人员,也可以作为大中专院校相关专业师生的参考用书和相关培训机构的培训教材。

《高性能MySQL(第2版)》不但适合数据库管理员(dba)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。

总体来说,两本说各有优劣,都可以看看,可以当做一步是基础,一步是进阶。

六、mvcc事务实现原理?

MVCC全称是: Multiversion concurrency control,多版本并发控制,提供并发访问数据库时,对事务内读取的到的内存做处理,用来避免写操作堵塞读操作的并发问题。

举个例子,程序员A正在读数据库中某些内容,而程序员B正在给这些内容做修改(假设是在一个事务内修改,大概持续10s左右),A在这10s内 则可能看到一个不一致的数据,在B没有提交前,如何让A能够一直读到的数据都是一致的呢?

有几种处理方法,第一种: 基于锁的并发控制,程序员B开始修改数据时,给这些数据加上锁,程序员A这时再读,就发现读取不了,处于等待情况,只能等B操作完才能读数据,这保证A不会读到一个不一致的数据,但是这个会影响程序的运行效率。还有一种就是:MVCC,每个用户连接数据库时,看到的都是某一特定时刻的数据库快照,在B的事务没有提交之前,A始终读到的是某一特定时刻的数据库快照,不会读到B事务中的数据修改情况,直到B事务提交,才会读取B的修改内容。

一个支持MVCC的数据库,在更新某些数据时,并非使用新数据覆盖旧数据,而是标记旧数据是过时的,同时在其他地方新增一个数据版本。因此,同一份数据有多个版本存储,但只有一个是最新的。

MVCC提供了 时间一致性的 处理思路,在MVCC下读事务时,通常使用一个时间戳或者事务ID来确定访问哪个状态的数据库及哪些版本的数据。读事务跟写事务彼此是隔离开来的,彼此之间不会影响。假设同一份数据,既有读事务访问,又有写事务操作,实际上,写事务会新建一个新的数据版本,而读事务访问的是旧的数据版本,直到写事务提交,读事务才会访问到这个新的数据版本。

MVCC有两种实现方式,第一种实现方式是将数据记录的多个版本保存在数据库中,当这些不同版本数据不再需要时,垃圾收集器回收这些记录。这个方式被PostgreSQL和Firebird/Interbase采用,SQL Server使用的类似机制,所不同的是旧版本数据不是保存在数据库中,而保存在不同于主数据库的另外一个数据库tempdb中。第二种实现方式只在数据库保存最新版本的数据,但是会在使用undo时动态重构旧版本数据,这种方式被Oracle和MySQL/InnoDB使用。

七、高性能mysql第三版和第四版差异?

MySQL第三版主要具有性能优化、查询优化和安全性改进等功能,第四版则增强了内存管理、多主机支持、事务支持以及安全性和可用性方面的功能,还改进了关系模型、数据类型和索引等功能。

八、mysql front和mysql?

mysql front :MySQL的GUI工具,就是mysql的可视化操作页面,可以让你像用SQL Server那样创建数据库、表、字段等等的,如果不用这个工具你就必须在doc窗口下写了 mysql:就是数据库啊,不用mysql-front也可以用啊,就是操作不方便 密码,用户名要写的,连接数据库还要用呢 想JSP连接数据库:没有后台代码吗?

九、OCC和MVCC的区别是什么?

*最简单的并发控制算法是2PL(2 Phase Locking),分为两阶段:

1)获得锁阶段;

2)释放锁阶段。

一般2PL被称为是悲观并发控制。

与之相对的是乐观并发控制OCC( Optimistic Concurrency Control)。OCC假设事务会成功,开始事务时该读读,该写写,不加锁。只有到提交时做一下验证,验证这个事务是不是能够成功提交。 OCC分为三阶段:

1)Read Phase, 对于读,放到Read Set,对于写,把写记到临时副本,放到Write Set。因为写是写到临时区的,属于未提交结果,其它事务读不到(这点是和MVCC的重要区别);

2)Validation Phase,重扫Read Set,Write Set,检验数据是否满足Isolation Level,如果满足则Commit,否则Abort;

3)WritePhase,或者叫做Commit Phase,把临时副本区的数据更新到数据库中,完成事务提交。

MVCC(Multiversion Concurrency Control)是另一种并发控制算法。MVCC为每条记录维护多个快照(Snapshot),通过起止两个时间戳(Begin Timestamp / End Timestamp)维护副本的可见性。读写进行的不同操作如下:

Update,创建一个新的版本(Version);

Delete,更新End Timestamp。

Read,通过起止时间戳判定记录是否对当前事务可见(OCC读不到未提交的记录,所以不需要做这个判断)。

这样,通过Snapshot,实现了读写互不阻塞。但为了实现Serializable,对读写规则还是要进行一定的限制。MVCC通过不同的方法实现。有基于锁定的,MV-2PL,如MySQL。有基于时间排序(Time Ordering)的,叫MV-TO,如PostgreSQL。其实准确来说,PG的实现叫SSI(Serializable Snapshot Isolation),不算MV-TO。也有像OCC那样基于乐观算法的,MV-OCC,即读写时不做验证,延迟到提交时验证。

效率上,2PL读写阻塞,在维护锁开销较小时较好;OCC不维护锁,一些比较新的OCC算法吞吐可以做得很高,不过相应回滚也会比较高,冲突比较小和验证开销小时比较好;MVCC对不同类型的workload都有很好的适应性,读写互不阻塞,回滚率也比OCC好,很多RDBMS也都用MVCC,如Oracle,PostgreSQL,MySQL。还有一个效率问题,随着现在CPU核心数越来越多,考虑并发控制算法往往需要考虑它的多核扩展性好不好。由于多数MVCC,OCC算法都需要时间戳分配,时间戳通常对全局变量进行CAS(Compare And Swap)操作来计算,当核心数变大时,CAS的争用也变大了。

另外,现在的许多并发控制方法经常混合了多种算法。先有人提出了A,后有人提出了B,再后来就有人提出了A+B,那么A+B应该是叫A呢还是叫B呢?就像上面提到的MV-2PL,MV-TO,MV-OCC。

-------------------------------------

关于并发控制算法怎么分类,有不同的意见。

《Transactional Information Systems》对并发控制算法的分类。把多版本相对于单版本,作为另一个维度看。多版本可以应用在任一算法上,形成MV-SGT,MV-TO,MV-2PL,MV-OCC等。

CMU 15-722课程里,把并发控制分为两类,2PL和TO,OCC和MVCC都归为TO。

-------------------------------------

感谢 @Ed Huang 纠正关于2PL应用场景的错误

十、mysql 自学要多久呢?

撰写本文查阅了大量参考资料,也得到很多朋友的指点帮助,特别感谢:Jimmy Yang——阿里云数据库研究员,原Oracle InnoDB Architect.彭立勋——华为云数据库总工程师,MySQL ACE Director,MySQL中国用户组创始成员之一.谭宇——玖章算术首席架构师,原阿里巴巴技术总监,数据库智能运维研发负责人,OceanBase创始团队成员.

「初出茅庐」

我是一只勤劳的小海豚,网名叫MySQL,出生于1995年5月23号,正宗95后,你们可别小看我,我现在可是全世界最流行的开源数据库,全球有800万个实例呢。

Monty

早些年的事情我也不太记得了,只想起爸爸希望我的特长是查询数据比较快,帮他解决一些工作上的事情。Monty爸爸非常爱我,每天都陪伴在我身边,教我技能,并且看到我每进步一些就取个新代号,真是望女成凤啊。记得6岁那年,我还是个丑小鸭,代号是V3.23,开始有人认识我了,感觉我小巧可爱,不像有些前辈(Oracle)那么古板,他们虽然经验非常丰富,但请他们干活得准备个半天,并且贵得要死。我到处打黑工,基本不收费,并且把我的做事方法开源了,很多人开始帮我改进,感觉自己进步神速。

「剑露锋芒」

记得到2005年,我10岁,已经进化成V5.0,以前只会从表格里查查资料,我现在开始学会了不少高级技能(如:视图、存储过程、函数、触发器),而且我还把内部资料整理在叫information_schema的仓库,让大家更了解我,很多高级的事情他们可以查询仓库自己干了,我第一次懂得与其他人协作完成事情,因为我学会了分布式事务(XA)。虽然自己学会了很多技能,但是总是毛手毛脚,爸爸天天帮我擦屁股(bug太多啊)。

直到2008年,我13岁,进化为V5.1,才开始大胆出去接客。那时很多中国的小伙伴开始了解我,他们之前一直是请Oracle这些老古董,后来互联网业务发展很快,请Oracle干活太费钱了,于是和我密切接触。记得新浪、网易、阿里巴巴、百度、腾讯等小伙伴对我都非常热情,我很开心,他们把很多业务交给我来处理,还帮助我提升技能。

压力山大的是阿里巴巴说要把全部业务都交给我负责,他们搞了个去IOE的行动,并且还有个剁手节,我很慌啊。每年11.11号大家一起剁手,我从来没见过这么多人,尤其是那些姐妹们,根本停不下来,我就要不停记录他们的订单,我感觉我快要撑不住了,你看,她们的手都在这里:

拍自意大利威尼斯剁手商场

“那是2002年的第一场雪”,哦,记错了,是2012年的11.11号0点,我算彻底崩了,休息了30分钟才缓过来。小伙伴知道我压力太大,撑不住,于是自己再找了中间代理商帮我分担压力,那时中间商很多,Vitess、Cobar、TDDL、DDS、MyCAT等等,中间商给我的活一般比较简单,每次只要拿很少的数据,压力瞬间小了很多。

「意中人」

我打小一直和MyISAM哥哥搭配,虽然很多时候都干得不错,但是在遇到要同时干几件事情的时候,他就力不从心,为了避免出错,我只能让他一件一件干,客人感觉我们效率不高,我也非常烦恼。

后来有个叫InnoDB的小伙子主动来帮我,我太开心了,当很多活过来的时候,我慢慢开始推荐InnoDB哥哥处理了,他确实不错呀,可以几件事情同时开工,从不出错。我慢慢爱上他了,但是我一直放不下MyISAM,直到2010年,我摊牌了,正式和InnoDB哥哥在一起,开始新的生活,和InnoDB磨合一段时间,越来越融洽了。

到2013年,我刚满18岁,代号升级为V5.6,InnoDB也更强大,效率提升了2倍,另外我还把很多运行数据记录在performance_schema了,遇到问题可以很快诊断原因。现在全世界的程序员都喜欢我,还有很多DBA(数据库管理员)把我做事情的方法研究得非常透彻,持续给我改进意见。我已经不是当年的丑小鸭了,AWS、Facebook这些土豪们也喜欢和我合作。

「独门秘籍」

从小爸爸教了我一些独门秘籍,我感觉自己虽然内功不够,但是招式很牛,初学者都非常喜欢,我给大家介绍几招哈:

一、主备分身术

所谓分身术,就是主备可以同时处理事情,这可是我的拿手绝活。

我可以瞬间变出一个分身,甚至是多个分身,当事情很多的时候,这些分身可以一起上,那效率杠杠的。我的分身术在互联网圈子太实用了,可以秒秒钟搭起读写分离架构,不要太爽。

而那些老前辈的分身术比较老套,他们通常是一个人单打独斗,偶尔也培养个分身,在自己扛不住时候换分身顶上,平时分身都是在一旁看着。后来他们也学习我的分身术,但总感觉是照猫画虎,哈哈。

不过Oracle那个老家伙功力深厚,有本RAC秘籍,说非常牛,我一直没有学会。

二、秀外慧中掌(SHOW)

在我这里,可以用SHOW方法查看很多内部资料,如分身、库、表、视图、函数、用户、帮助,啥都可以SHOW出来,一展芳容啊。DBA们特别喜欢这些招术。

show slave status; # 查看分身(备库)状态
show processlist; #查看当前连接信息,可以看到当前谁在访问我,还可以看到当前运行的慢SQL了
show databases;  #查看数据库列表 
show tables; #查看表列表
show create table t1; #查看表定义 
show grants for user1; #查看用户有哪些权限
show engine innodb status; #查看innodb运行细节,什么死锁、内存信息都在这里了

而老前辈们总是把自己那点东西藏着掖着,根本没这项技能。

三、翻页神器

大家搜索信息的时候,经常会如下翻页显示

我的翻页神器就是专门干这个事情,非常厉害,看招:

#MySQL使用limit的分页语法,查看从第90条开始的10条数据
select * from user 
order by name limit 90,10

那些老家伙是下面的打法,实在是丢人,三招打完,感觉还是云里雾里:

#Oracle使用rownum分页语法 
select *
  from(
    select rownum as rn,
           a.*
      from user a
     order by name
     where rownum<100
    )
 where rn>90

后来SQL标准组织老大爷们搞了个新的分页语法,如下是做的样板,你看懂了吗,反正我看了后感觉要头晕,记不住啊。

分页语法

好了,我的独门秘籍还有很多很多,以后再娓娓道来,接下来讲讲我的几次重大变故。

「嫁入豪门/背井离乡」

我家本来在瑞典的MySQL AB,在美国也有一些伙伴。2008年,美国硅谷有个叫SUN的土豪盯上我们家,说要给我们10亿美金发展,家人们没有经得住诱惑,于是我们就搬到SUN的地方。SUN家大业大,他们老大叫SPARC(一种精简指令集CPU架构,和Intel是对头),老二叫Solaris(一种UNIX操作系统,老古董了),还有只赚吆喝不赚钱的Java,虽然家大业大,但总感觉是虚胖,不是一般的虚胖。很快,到2009年,大土豪Oracle前辈用74亿美金把SUN买了,我的天啊,我在SUN家人还没认全,又要搬家了。

到了Oracle后,我终于和InnoDB哥哥团聚了,InnoDB在2005年就搬到Oracle家,一直和我眉来眼去,这次算是有情人终成眷属(其实我之前还有个初恋BerkeryDB也在Oracle家,不过那都是过去的事了)。

难过的是我爸爸Monty,他是开源斗士,非常不喜欢Oracle,和我们分道扬镳。他自己回到芬兰,培养我妹妹MariaDB,其实到SUN家的时候,爸爸就感觉不可能和我永远在一起,开始花时间在MariaDB上。看,下面是我姐妹俩的靓照,MariaDB妹妹和我是不是很像啊。

MySQL 、MariaDB

爸爸希望我不要在Oracle家里受欺负,如果Oracle不要我了,我还可以和MariaDB住到一起。现在MariaDB也自己出来工作了,有时我们还会PK下,但是我更希望她快快长大。爸爸年过花甲,最近又去中国见老朋友了,还说要陪妹妹工作到100岁,祝福他老人家,越活越年轻。

我一直在钻研分身术,很早的时候分身只会模仿我的口令行事(Statement模式)。到2008年(V5.1)的时候,我把法术细节(Row模式)传送给她,她就可以自己灵活发挥了。 到2015年,那年我20岁,我也升级到了V5.7,分身更厉害了,以前分身在我非常忙的时候,她有点跟不上,现在我们信息可以并发同步,她已经完全跟上我的节奏。那时业界还流行了JSON(把XML打趴下的),于是我也悄悄的学会JSON,还有那个地理空间技术,都是在我20岁练成的。另外InnoDB也修炼了动态调整内存技能,对内存使用可以像孙悟空的金箍棒一样,说大就大,说小就小。

Oracle一直在给我酝酿V5.8的代号,都要昭告天下了,我感觉自己进步很大,V8更符合我的气质提升,于是2018年,我决定从V5.7摇身变为V8.0代号。MyISAM哥哥实在对不住啊,我感觉要彻底离开你了,V8的我已经和InnoDB全面融合,我的机密小仓库(元数据)都是InnoDB的了。我还学会了窗口函数、CTE语法,可以说在数据分析和复杂SQL处理方面如虎添翼。我正在修炼Hash Join(一种比较高级的算法,前辈们都非常熟练),不过还是初学阶段,大家见笑了。

「名人烦恼」

因为我在业界小有名气,据探子回报,有31位江湖新秀在修炼我的招式,OceanBase、TiDB、TDSQL、SequoiaDB、ShardingSphere、Vitess、HotDB,另外还有AWS的Aurora、阿里云PolarDB、华为云GaussDB等等,他们都说比我强大,学会了分布式和云原生的武功秘籍,另外还在修炼HTAP神功。我的天啊,我比较怕怕,更不知道如何还击,但是“我还是我,不一样的烟火”。

我对大数据处理不太擅长,不过有些新人这方面天赋异禀。比如最近有个俄罗斯出生的ClickHouse小朋友很出名,他也模仿了我的一些招式,我挺看好他的。中国还有个叫Doris的小弟弟也从我这里学了一招半式,据说拽得不行。我们自家刚出生了个HeatWave的弟弟,也有数据分析的天赋,不过他很少出门,一直住在我家云里面,现在家里人都围着他转,希望他快点长大。

我也不知道未来会怎么样,那些NoSQL的同行总在挑衅我,包括MongoDB、Redis、Nebula Graph、TDengine等等。最近10年大家都开始搬到云上生活,感觉在Oracle这里很分裂,我们家那朵云好像不温不火。最早家里不让我住到云上,反而AWS、阿里云他们把我当头牌,早早把云上天之一号房间给我,我也给他们赚了上百亿现金,真是投桃报李啊。我是墙里开花墙外香,你懂的。

其实我到Oracle家一直都不太受待见,感觉像个小妾,担心我抢正房的风头,外界总谣传Oracle买我只是为了得到我。InnoDB哥哥一直在鼓励我活着,我们也是互相依靠了,毕竟如果我没了,他肯定也活不下去。我虽然一直在升级,但也不知道V9啥时候发布,因为现在大家都在上云,所以我的核心任务也是在云上站稳脚跟,其他事情都顾不上了。

我还有个叫大象(PostgreSQL)的死对头,其实她是70后,叫她大姐估计会拿刀砍我。她在十几岁的时候家里发生了一些变故,后来迷上了面向对象的法术,以为那是绝世神功,最后没练成,不了了之,还留下了一堆废铁,现在算是回归正道。她是大学老师的好学生,学霸类型,什么都懂,号称最强大的开源数据库。我感觉懂是懂,但真正干起来没有我靠谱,所以我也就不和她计较了。不过她比我还开放,有很多朋友,近几年也进步神速,中国还有个openGauss兄弟和她很好,也许会青出于蓝胜于蓝,我还是要当心点。

轮到我做核酸了,今天就和大家聊到这里啊,下次空了再叨叨,还是在公众号《云数据库技术》老地方。我现在家里地位急待提升啊,如果你在使用MySQL,记得帮我点赞和转发哈,我家还有几件珍藏的MySQL练功内衣可以送出。

「作者简介」

我的老熟人,名叫「斗战胜佛」,他在我6岁(V3.23)就认识,研究了二十年的数据库和云计算,擅长十几种武功。最近他和一群大牛在研究《玖章算术》,是中国古代一本非常牛逼的武功秘籍,后来李淳风、张苍、刘辉等人都练了并修订过。他们在SQL开发、数据复制、数据备份等方面又有新突破,这些武器都是我非常需要的,毕竟程序猿和DBA是咱衣食父母,说不定哪天可以带我腾云驾雾呢。他的研究进展计划放在 9z.cloud 密室,一定要去探探

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片