在数据库中,用户可以通过建立索引的方式来提升查询性能,当数据表中的数据量越来越大时,则可以通过分区的方式将数据表拆分成若干分片,利用负载均衡将数据分片打散到整个集群中来提高集群整体服务能力。在主表数据量变大的场景下,索引表的数据也可能面临同样的问题,需要进行进行拆分来提高整体服务能力。因此本文主要介绍索引分区的基本情况。1.名词解释局部分区索引:创建索引的时候指定关键字LOCAL的索引为局部索引,局部...
2022-09-21 10:34:29 5580浏览 0点赞 0回复 0收藏
写在前面在分布式存储系统(包括OceanBase这样的分布式数据库)的使用中,我们经常会提到“一致性”这个词,但是这个术语1在不同的系统、不同人的心目中有不同的内涵,很容易造成混淆。想象一个最简单的存储系统,只有一个客户端(单进程)和一个服务端(单进程服务)。客户端顺序发起读写操作,服务端也顺序处理每个请求,那么无论从服务器视角还是从客户端视角,后一个操作都可以看到前一个操作的结果。然后,系统变的复杂一...
2022-09-21 10:34:16 4939浏览 0点赞 0回复 0收藏
概述水平拆分的概念随着分布式数据库的推广已为大部分人熟知。分库分表、异构索引、小表广播、这些功能几乎是产品功能需求标配。然而有些客户使用分布式数据库后的体验不尽如意。本文尝试从数据的角度总结分布式数据的复制(replication)和分区(partition)技术原理和方案,其中分区也有称为分片(sharding),希望能引起读者一些思考,在分布式数据库选型中能注意这些细节的区别,选择适合业务的数据水平拆分方案。分布式数...
2022-09-20 11:53:55 4557浏览 0点赞 0回复 0收藏
在关系数据库中,当大家提到SQL查询,自然而然的想到查询优化器,毋庸置疑,这是关系数据计算中非常重要并且复杂的一个模块,它决定了查询关系以哪种方式执行能够得到一个最优的结果。但是在关系计算的过程中,还有两个同等重要的模块,那就是查询调度器和计划执行器。在关系数据库发展的早期,受制于计算机IO能力的约束,计算在查询整体的耗时占比并不明显,这个时候调度器和执行器的作用被弱化,一个查询的好坏更主要取决于优...
2022-09-20 11:53:28 5420浏览 0点赞 0回复 0收藏
本篇为该系列文章的续篇,以时间轴的方式对不同时期的有代表性的论文(从理论研究、原型系统、生产系统三个维度分类)进行了梳理,带你简要回顾一下OCC在学术界及工业界的发展历程。这里需要先对OCC(OptimisticConcurrencyControl)指代的概念做一个说明,从广义上理解,OCC表示一种乐观并发控制的思想,只在事务提交时对事务是否符合串行化进行验证;而悲观并发控制(PessimisticConcurrencyControl)会对事务执行过程中的每...
2022-09-20 11:52:50 8702浏览 0点赞 0回复 0收藏
不可逆转的趋势从本地到云端长期以来数据库系统(DBMS)的市场规模在软件行业里一直是最大的*。在2017年的总市场规模达到368亿美元,相对于2016年有超过8%的增长。然而在最近几年,传统的5家商业数据库厂商Oracle、微软、IBM、SAP、Teradata总市场份额却在持续下滑,从2011年的91%下降到2016年的86.9%。与传统商业数据库的市场占有率持续下降相对应的是,AWS透露在过去的两年中,有超过64,000个数据库从传统商业数据库(Oracl...
2022-09-20 11:51:07 5262浏览 0点赞 0回复 0收藏
在互联网世界里,存在着一种怪圈:本地企业为了向本地人群推销本地产品,却每天都在源源不断地把广告费输送给境外公司。在美国,有这么几家巨无霸公司,诸如Google、Amazon、Facebook等,已经逐渐垄断了欧洲和日本的互联网应用相关市场。而反观中国,我们有自己的电商网站(淘宝天猫等),自己的搜索引擎和社交应用(微信,微博等)。我们是否可以自信的说,我们真的达到了国际一流的技术水平?从互联网应用的角度来看,中国制...
2022-09-20 11:40:39 4240浏览 0点赞 0回复 0收藏
最近在网上看到一篇文章《伯克利推出世界最快的KVS数据库Anna:秒杀Redis和Cassandra》,标题中有两点比较吸引眼球:伯克利这个大学在计算机学术界、工业界的地位举足轻重,其中的AMP实验室曾开发出了一大批大获成功、对计算机行业产生深远影响的分布式计算技术,包括Spark、Mesos、Tachyon等。作为AMP的继任者,于2017年2月新成立的RISE实验室致力于开发实时、智能、可安全执行的新一代大数据处理系统,已经开源了新型分布式执...
2022-09-20 11:40:14 6278浏览 0点赞 0回复 0收藏
星星之火2018年4月20日,苹果宣布开源FoundationDB,一款支持多种数据模型、高性能、高可用、可扩展,且具备ACID事务的分布式KVNoSQL系统。FoundationDB已在苹果公司内部的生产环境使用三年,主要用于iCloud上的云存储服务。苹果于2015年收购开源的FoundationDB并将其闭源。此次再次开源,是因为苹果预见到:FoundationDB有潜力成为下一代分布式数据库系统的底层基础设施。同时,也希望借助社区的力量,利用FoundationDB设计...
2022-09-20 11:38:38 4031浏览 0点赞 0回复 0收藏
当前,基于LSM架构的存储系统很常见,对该架构来说,compaction(合并)是一个重要操作,本文带你了解compaction相关知识。10年前Google发表BigTable的论文,推动了基于LSM的系统架构的流行,用户数据写入先写WAL,再写Memtable,满足一定条件后冻结Memtable,执行转储操作形成一个数据文件SSTable。随着数据写入不断增多,转储次数也会不断增多,进而转储SSTable也会越来越多。然而,太多SSTable会导致数据查询IO次数增多,因...
2022-09-20 11:36:03 5558浏览 0点赞 0回复 0收藏
支持OLTP型业务的数据库系统,计划生成占执行消耗的比例很大,利用计划缓存来减少开销对系统性能至关重要。如何缓存计划?如何选择合适的缓存计划?SQL是一种“描述型”语言。与“过程型”语言不同,用户在使用SQL时,只描述了“要做什么”,而不是“怎么做”。因此,数据库在接收到SQL查询时,必须为其生成一个“执行计划”,这个生成执行计划的过程叫做查询优化(QueryOptimization)。查询优化是数据库中一个非常耗时的过程,...
2022-09-20 11:35:53 4156浏览 0点赞 0回复 0收藏
数据的一致性在数据库系统作为一个单独的软件诞生之前,工程师需要给每一个系统开发管理数据文件的逻辑,一个业务接着一个业务都有类似的在文件中存储数据的需求。“那个时候,开发软件最难的部分不是完成业务的执行逻辑,而是如何保证不同数据文件里数据的一致性。”,ThomasNies曾这么说过,于是他创建了TOTAL数据库系统,把所有数据处理的逻辑都纳入其中,开始了计算机产业内第一次独立的软件售卖,并且成为了前关系数据库时...
2022-09-20 11:35:17 4320浏览 0点赞 0回复 0收藏
Join是关系数据库中非常重要的一种操作。数据库对于Join通常有三种主要的实现:MergeJoin,NestedloopJoin,HashJoin。其中HashJoin适用于带有等值条件情况,由于HashJoin的算法复杂度在平均情况下是O(n),通常在大规模数据做HashJoin是最优的选择。主流的关系数据库(Oracle,SQLServer,PostgreSQL)等都有HashJoin的实现。MySQL主要应用于oltp场景,没有实现HashJoin。InMemoryHashJoin对于两张待join的表t1,t2。选取其中的一张表按...
2022-09-20 11:34:46 6807浏览 0点赞 0回复 0收藏
Oracle、MySQL、OceanBase三款面向OLTP场景的关系数据库系统,它们的Cache设计有什么异同,本文带你一探究竟。Oracle的Cache设计Oracle的内存主要分为SGA(SystemGlobalArea)和PGA(ProgramGlobalArea)两部分,SGA由所有服务及后台进程共享,PGA由每个服务及后台进程独有。附一张Oracle官方文档中的内存结构图。上图中我们可以看到,在SGA中包含了很多不同的内存结构,如BufferCache、RedoLogBuffer、SharedPool、LargePool...
2022-09-20 11:34:31 4075浏览 0点赞 0回复 0收藏
关系数据库的事务(transaction)是一组操作序列,比如读,插入,删除,更新等等。事务有四个基本要素,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),即ACID:原子性:事务的所有修改操作,要么全部都执行,要么全部都不执行。在任何情况下,都不能出现一个事务的部分操作执行、部分操作没有执行的情况,比如一笔从账户A到账户B的转账,如果账户A状态异常或者余额不足,那么转账...
2022-09-20 11:31:25 3217浏览 0点赞 0回复 0收藏
问题描述Oceanbase历史库平台最近接入了一些从Mysql库导入的项目,但是在校验的过程中发现有几列数据不一致的情况,对于一个数据迁移工具来说,这是绝对不能接受的错误,于是我们赶紧去查看了错误日志,发现错误的数据长这样:在线库:鎱曠鑺历史库:鎱曠鑺怎么看起来一毛一样?我们打印出了两个字符串的unicode看一下:source[0]93b1source[1]66e0source[2]e716不一致的编码source[3]947asource[4]3ftarget[0]93b1target[1...
2022-09-20 11:31:14 3956浏览 0点赞 0回复 0收藏
引言 在数据库系统中,对于用户SQL请求,优化器会选择最优的执行计划,同样的SQL在不同环境,优化器在选择最优计划时可能会发生变化,发生变化的原因有系统升级、统计信息重新收集、优化器相关系统参数变更等。在实际生产系统中,执行计划的变化有可能导致执行性能回退,这种性能回退会导致请求RT升高甚至执行超时,这对数据库用户来说是无法接受的。 为解决该问题,用户常用的方式是将执行计划通过一些方案固定下来(比如...
2022-09-20 11:30:58 4213浏览 0点赞 0回复 0收藏
1.RETURNINGINTO简介RETURNINGINTO语句是OraclePL中的一种语法,它指定变量存储SQL语句的返回值。RETURNINGINTO经常和delete,update,insert语句结合使用,举个例子如下:UPDATEtablenameSETexpr1RETURNINGcolumnnameINTOxxx上面的例子中,update语句执行后,RETURNING语句将列名为columnname的列中的数值保存在xxx变量中。对于delte,update和insert语句,RETURNINGINTO返回的内容有些不同:INSERT返回插入后的值;DELETE返回...
2022-09-20 11:30:43 5749浏览 0点赞 0回复 0收藏
介绍为了给业务带来更多的便利性,OceanBase支持了MERGE语句。一条MERGE语句可以同时完成对一个张表的更新,插入和删除三种操作。内容发生变更的表一般称为TargetTable;而插入或更新的内容来源往往是另一张表,一般称为SourceTable。使用语法mergemergeupdateclausemergeinsertclause举例这里通过一个例子来说明MERGE语句的使用。当前有t1和t2两张表,表结构和内容分别如下:OceanBase(rootoceanbas...
2022-09-20 11:30:25 4013浏览 0点赞 0回复 0收藏
绪论在数据库中,索引是非常重要的一部分,可以大幅度提升查询性能,而B+树则是使用最广泛的索引结构,在Oracle,PostgreSQL,MySQL都有采用。在这些传统数据库中,采用B+树主要是为了减少磁盘的随机访问次数,因为磁盘的随机访问非常慢,一般只有几百次秒。最近几年,随着内存数据库的发展,索引结构可谓百花齐放,如MemSQL使用了SkipList,HyPer使用了AdaptiveRadixTree,SQLServer的内存存储引擎Hekaton使用了BwTree,Kudu使...
2022-09-20 11:30:14 5913浏览 0点赞 0回复 0收藏