CN116701398A - 存储器中数据库的选择性数据压缩 - Google Patents
存储器中数据库的选择性数据压缩 Download PDFInfo
- Publication number
- CN116701398A CN116701398A CN202310712612.2A CN202310712612A CN116701398A CN 116701398 A CN116701398 A CN 116701398A CN 202310712612 A CN202310712612 A CN 202310712612A CN 116701398 A CN116701398 A CN 116701398A
- Authority
- CN
- China
- Prior art keywords
- data
- data portion
- volatile memory
- mirrored
- statistics
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013144 data compression Methods 0.000 title abstract description 6
- 238000007906 compression Methods 0.000 claims abstract description 74
- 230000006835 compression Effects 0.000 claims abstract description 74
- 238000000034 method Methods 0.000 claims abstract description 74
- 230000002085 persistent effect Effects 0.000 claims abstract description 27
- 238000011156 evaluation Methods 0.000 claims abstract description 24
- 238000012797 qualification Methods 0.000 claims description 97
- 238000003860 storage Methods 0.000 claims description 48
- 230000008901 benefit Effects 0.000 claims description 7
- 238000010926 purge Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 description 31
- 239000013598 vector Substances 0.000 description 26
- 238000004891 communication Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 230000008859 change Effects 0.000 description 9
- 238000007726 management method Methods 0.000 description 8
- 230000006837 decompression Effects 0.000 description 7
- 238000009826 distribution Methods 0.000 description 7
- 230000002349 favourable effect Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 6
- 230000002688 persistence Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000000670 limiting effect Effects 0.000 description 5
- 238000005259 measurement Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 238000005192 partition Methods 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000036962 time dependent Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000036316 preload Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000002546 full scan Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及存储器中数据库的选择性数据压缩。提供了一种技术,该技术用于以一种格式持久性维护数据,但使该数据以多于一种的格式可用于数据库服务器。可以在易失性存储器中专门维护处于独立于盘格式的格式中的数据,以减少与保持数据与数据的盘上格式拷贝同步相关联的开销。选择要在易失性存储器中被维护的数据可以基于各种因素。一旦被选择,该数据也可以被压缩以节省易失性存储器中的空间。压缩级别可以取决于针对选定数据被评估的一个或多个因素。可以周期性地对数据的压缩级别和选择的因素进行评估,并且基于该评估,可以从易失性存储器中移除选定数据或者相应地改变选定数据的压缩级别。
Description
本申请是国际申请日为2016年6月30日、国家申请号为201680057698.8、发明名称为“存储器中数据库的选择性数据压缩”的进入中国国家阶段的PCT申请的分案申请。
技术领域
本发明涉及数据库系统,并且更具体地涉及存储器中(in-memory)数据库的选择性数据压缩。
背景技术
鉴于易失性存储器(有时也称为“主存储器”)正在变得越来越便宜并且越来越大,可以将更多数据从盘存储装置高速缓存到易失性存储器。这种高速缓存使得可更快地访问数据,并且对于使用数据的应用而言,允许以更快速的方式来执行工作。
但是,使数据在易失性存储器中可访问仍然存在许多挑战。首先,通常由应用使用的数据量也显著增加。特别地,为了在易失性存储器中完全高速缓存较大量数据(俗称“大数据”),将需要极大量的易失性存储器。因此,不管易失性存储器的大小如何,仍然可能存在不能同时被高速缓存在易失性存储器中的数据(并且在一些情况下是数据的重要部分)。将根据需要从盘存储装置中访问这些数据并将这些数据加载到高速缓存中(替换高速缓存中的其它数据)。
当数据库系统需要对非高速缓存的数据执行操作时,需要首先将盘存储装置中的数据从盘存储装置读取到数据库系统的易失性存储器中。一旦加载到易失性存储器中,数据库系统就可以对数据执行操作。但是,与获得已驻留在易失性存储器中的数据相比,从盘存储装置读取数据通常会导致显著的性能损失。因此,当数据库系统需要对非高速缓存数据执行操作时,数据库系统无法从数据库系统具有大量易失性存储器的事实中经历显著的性能效益。
将更多数据适配到易失性存储器上的一种方法是在将数据存储到易失性存储器之前压缩数据。一旦数据被压缩,该数据将被重新调整大小以在易失性存储器中占用更少的空间。但是,并非所有数据都可以被显著压缩。此外,如果频繁地访问压缩后的数据用于操作,则将需要频繁地解压缩数据以便使用。这种频繁的解压缩使用本来可能用于数据操作的计算资源,从而减慢了数据操作并因此减慢了请求数据操作的应用。因此,在易失性存储器中高速缓存的数据的无差别数据压缩具有明显的缺点。
此外,无论在什么级别的压缩数据被复制到易失性存储器中,在某个时刻,数据库系统仍将用尽易失性存储器中的空间来存储更多的数据。因此,当易失性存储器处于满负荷状态并且数据库系统需要对仅存储在盘存储装置上的数据执行操作时,已经在易失性存储器中的一些数据将需要被替换以便为来自盘存储装置的数据腾出空间。这种替换越频繁,越多的计算资源浪费在将数据移入和移出易失性存储器上。因此,使数据替换的频率最小化将有助于数据库系统的高效性能。
本部分中描述的方法是可以实行的方法,但不一定是先前已被构思或实行的方法。因此,除非另外指出,否则不应当假定在本部分中描述的任何方法仅仅凭其被包括在本部分中就有资格作为现有技术。
附图说明
在附图中:
图1是根据实施例的同时维护在易失性存储器中的镜像格式数据和在持久性存储装置上的持久性格式数据的数据库系统的框图;
图2A是用于示例的表的框图;
图2B是根据实施例的如何可以同时以两种格式进行维护的表的数据项的框图,其中一种格式是存储器中格式;
图3A是图示根据一个或多个实施例的用于选择用于镜像的候选数据部分的处理的框图;
图3B是图示根据一个或多个实施例的用于指定用于从易失性存储器中移除的镜像数据部分的处理的框图;
图4是根据一个或多个实施例的描绘用于选择针对选定部分的压缩级别的处理的框图;以及
图5是图示可以用于实现本文所描述的技术的计算机系统的框图。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明的透彻理解。但是,可以在没有这些具体细节的情况下实践本发明将是显然的。在其它情况下,以框图的形式示出众所周知的结构和设备以避免不必要地模糊本发明。
总体概述
不同数据格式具有不同的好处。因此,本文所描述的技术用于以一种格式持久性地维护数据,但是使该数据以多于一种的格式对数据库服务器可用。在一个实施例中,使数据可用于查询处理的一种格式是基于盘上(on-disk)格式,而使数据可用于查询处理的另一种格式是独立于盘上格式的。
与盘上格式对应的格式在本文被称为“持久性格式”或“PF”。持久性格式中的数据在本文被称为PF数据。独立于盘上格式的存储器中格式被称为“镜像格式”或“MF”。镜像格式中的数据在本文被称为MF数据。关于利用MF数据和PF数据的数据库系统的更多细节在本文称为“镜像数据应用(Mirroring Data Application)”的于2014年7月21日提交的美国专利申请14/337,179“Mirroring,In Memory,Data From Disk To Improve QueryPerformance”中进行描述,该专利申请的全部内容通过该引用并入本文。
根据一个实施例,镜像格式完全独立于持久性格式。但是,基于持久存储的PF数据而非基于任何持久性MF结构在易失性存储器中初始地构建MF数据。由于不需要持久性MF结构,因此现有数据库的用户不需要将其现有数据库中的数据或结构迁移到另一种格式。因此,使用盘块中的非压缩数据的常规数据库系统可以在不执行任何数据迁移的情况下继续使用这些盘块来持久存储数据库系统的数据,同时仍然获得由于具有在较快的易失性存储器中可用的数据的压缩表示而产生的存储器空间益处。
MF数据对已经存在于PF数据中的数据进行镜像。但是,虽然在MF数据中的所有项都是在PF数据中的对应项的镜像版本(尽管以不同的格式被组织),并非在PF数据中的所有项都需要在MF数据中被镜像。因此,MF数据可以是PF数据的子集。
由于并非所有PF数据都必须在MF数据中被镜像,因此使用选择标准来自动选择要从PF数据被镜像到MF数据中的数据部分,诸如列。在实施例中,关于PF数据中的数据部分的各种因素被用来确定要对PF数据的哪些数据部分进行镜像。例如,如果表具有列A、B和C,并且列A具有最频繁的读取访问,则列A可以被选择用于从PF数据镜像到MF数据中。在这个示例中,使用列A的查询可以看到性能的提升,因为对在易失性存储器中的MF数据的访问比对在非易失性存储器中的PF数据的访问更快。除了考虑数据部分的访问统计值(诸如以上示例)之外,还可以考虑其它因素,诸如数据部分的数据统计值、操作统计值和数据类型。
即使在查询可能需要只能由PF数据满足的数据的情况下,MF数据仍然可以用于(a)满足查询的一部分,和/或(b)加快从PF数据中对所需数据的检索。例如,MF数据可以用于识别必须从PF数据中检索的特定的行。
在实施例中,可以使用各种因素来确定是否压缩MF数据中的数据部分以及针对数据部分的压缩级别。压缩级别指示数据部分占用多少易失性存储器空间,以及在检索数据部分时数据库系统用来解压缩数据部分所需花费的资源。例如,相对于其它数据类型,可能需要较少的计算开销来解压缩一些数据类型。因此,数据库系统可以自动确定具有这种数据类型的数据部分的压缩级别应该高于其它数据类型的压缩级别。另一方面,不同的数据部分可以以不同的频率被访问。为了节省数据库系统资源,具有更频繁访问的数据部分可以比具有不频繁访问的那些数据部分以更低的级别被压缩。除了数据部分的访问统计值和数据类型之外,其它因素可以包括MF数据中的相似数据部分的历史性能统计值。
在实施例中,MF数据可以是列格式或行格式,并且可以与PF数据不同。例如,PF格式是列优先(column-major)的,而MF格式是行优先(row-major)的,反之亦然。无论使用何种特定镜像格式,镜像格式数据都基于现有的PF结构(例如表和索引)在易失性存储器中被创建,而不会引起对这些结构的格式的改变。
通用体系架构
图1是根据一个实施例的数据库管理系统的框图。参考图1,数据库系统100包括易失性存储器102和持久性存储装置110。易失性存储器102一般表示由数据库系统100使用的随机存取存储器,并且可以通过任何数量的存储器设备来实现。通常,当发生故障时,存储在易失性存储器102中的数据丢失。
持久性存储装置110一般表示任何数量的持久性存储设备,诸如磁盘、闪存(FLASH)存储器和/或固态驱动器。与易失性存储器102不同,当发生故障时,存储在持久性存储装置110中的数据不会丢失。因此,在故障之后,持久性存储装置110中的数据可以用于重建在易失性存储器102中丢失的数据。
数据库系统100可以接收来自一个或多个数据库应用(未示出)的查询用于在数据库服务器120上执行。为了执行查询,使用查询优化器126,数据库系统100可以首先将查询转换成用于访问数据库服务器120中的PF数据112或MF数据104的操作符的有序集。每个操作符可以包含对另一个操作符的输出数据或对PF数据112或MF数据104的一个或多个数据操作。查询优化器126可以生成本文称为“执行计划”的操作符集的置换。在实施例中,为了确保选择最优执行计划,查询优化器126的统计值收集器128收集并维护关于数据库系统100的统计值。术语“统计值”在本文中是指描述数据库管理系统和存储在数据库系统100中的数据的任何数值表示。由统计值收集器128收集到的各种类型的统计值在“统计值”部分中进一步讨论。
PF数据112驻留在PF数据结构108中的持久性存储设备110上。PF结构108可以是任何组织级别上的PF数据112的结构,例如,表、列、行、行优先的盘块、列优先的盘块等。
易失性存储器102还包括PF数据的高速缓存106。在高速缓存106内,以基于数据驻留在PF数据结构108内的格式的格式存储数据。例如,如果持久性格式是行优先的盘块,则高速缓存106可以包含行优先的盘块的高速缓存拷贝。
另一方面,MF数据104处于与持久性格式无关的格式。例如,在持久性格式是行优先的非压缩盘块的情况下,镜像格式可以是列优先的压缩单元。由于镜像格式与持久性格式不同,因此通过在PF数据112上执行变换来产生MF数据104。
镜像数据生成器124可以执行这些变换,这些变换既可以在易失性存储器102初始地被MF数据104填充时发生(无论在启动时或根据需要时),又可以在易失性存储器102在故障之后被MF数据104重新填充时发生。在实施例中,镜像数据生成器124可以基于下面描述的一个或多个因素从PF数据112中选择数据并对该数据进行镜像以生成MF数据104。
在实施例中,事务管理器122将存储器中MF数据104维持与PF数据112在事务上一致。MF数据104在事务上一致,因为从MF数据104向事务提供的任何数据项将是如果从PF数据112提供该数据项时将会提供的相同版本。此外,该版本反映了在事务的快照时间之前提交的所有改变,并且不存在事务的快照时间之后提交的改变。因此,当对在MF数据104中被镜像的数据项做出改变的事务被提交时,该改变相对于PF数据112和MF数据104两者都可见。另一方面,如果做出改变的事务被中止或回滚,则该改变相对于PF数据112和MF数据104两者都回滚。
在一个实施例中,事务管理器122不仅确保PF数据112的读取和写入之间的一致性,而且还用于确保MF数据104的读取和写入之间的一致性。由于MF数据104以事务上一致的方式保持当前状态,因此如果存储器中MF数据包括数据库操作所需的数据,则可以从存储器中MF数据或者从PF数据112满足数据库操作。
重要的是,MF数据104的存在可以对向使用MF数据104的数据库服务器提交数据库命令的数据库应用是透明的。例如,被设计为与专门在PF数据112上操作的数据库系统交互的那些相同的应用除了PF数据112之外还可以不加修改地与维护MF数据104的数据库服务器交互。进一步地,对那些应用透明地,该数据库服务器可以使用MF数据104来更高效地处理那些数据库命令中的一些或全部。
镜像格式数据
MF数据104可以对所有PF数据112或PF数据112的子集进行镜像。用户可以指定PF数据112的哪一部分是“在存储器中启用的(in-memory enabled)”。可以以任何粒度级别做出该指定。例如,可以至少以以下粒度级别做出对什么是在存储器中启用的指定:
·整个数据库
·指定的表
·指定的列
·指定的行范围
·指定的分区(partition)
·指定的段(segment)
·指定的扩展区(extent)
·任何上述组合(例如指定的列和分区)
以上列出的任何粒度级别的数据在本文中被称为“数据部分”。在实施例中,镜像数据生成器124可以推荐用户使PF数据112的数据部分在存储器中启用,或者自动将数据部分识别为在存储器中启用。
如下所述,在存储器中启用的数据由镜像数据生成器124转换成镜像格式并且在易失性存储器中存储为MF数据104。因此,当查询需要在存储器中启用的数据时,数据库服务器具有从PF数据112或者从MF数据104提供数据的选项。转换和加载可以在数据库启动时发生,或者以懒惰或按需的方式发生。非存储器中启用的数据不在MF数据104中被镜像。因此,当查询需要这种数据时,数据库服务器不具有从MF数据104中获得该数据的选项。
为了解释的目的,将假定PF数据结构108包括在图2A中图示的表200。表200包括三列c1-c3和六行r1-r6。虽然在图2A中表200的图示描绘了如何将数据逻辑地组织在持久性存储装置110中,但是其中数据被物理存储的实际格式可能是完全不同的。
具体而言,参考图2B,图2B图示了如何可以将驻留在表200中的数据物理地组织在持久性存储装置110中。在本示例中,表200的数据被存储在三个行优先的盘块202、204和206中。块202存储行r1的所有列的值,接着存储行r2的所有列的值。块204存储行r3的所有列的值,接着存储行r4的所有列的值。最后,块206存储行r5的所有列的值,接着存储行r6的所有列的值。
这些盘块中的一些盘块的拷贝可以被临时存储在高速缓存106中。在图2B图示的示例中,块204的高速缓存拷贝212驻留在高速缓存106中。可以使用各种高速缓存管理技术中的任何一种技术来管理高速缓存106,并且本文描述的实施例不限于任何特定的高速缓存管理技术。一般而言,这些技术试图在易失性存储器102中保留最有可能在不久的将来被请求的盘块的拷贝。因此,当高速缓存106用尽空间时,较可能被请求的块的拷贝替换较不可能被请求的盘块的高速缓存拷贝。
与高速缓存106中的数据相反,镜像格式数据104没有以基于持久性格式的方式被格式化。在图示的示例中,镜像格式数据104包括两个列向量220和222。每个列向量存储来自表200的单个列的连续的一系列值。在本示例中,列向量220存储来自表200的列1的值,并且列向量222存储来自表200的列3的值。在这个示例中,MF数据104对PF数据112的子集进行镜像,因为MF数据104不包括表200的列2的列向量。
数据库系统统计值
在实施例中,统计值收集器128收集关于数据库系统100中的数据和数据的访问的各种类型的统计值。统计值收集器128还收集关于数据库系统100的性能的统计值。在一个实施例中,对各种类型的对象收集统计值,并且以不同粒度级别(诸如分区、列、表、视图甚至索引)收集统计值。
数据库系统统计值一般被划分为数据统计值、访问统计值和系统统计值。下文将更详细地描述这些统计值类别中的每一个。
数据统计值
术语“数据统计值”在本文中是指用于量化存储在数据库系统中的数据的数据分布和存储特性的数值表示。在实施例中,针对任何粒度数据部分收集数据统计值。
数据统计值的非限制性示例包括:
·行数-描述数据部分中行的数量。
·块数-描述数据部分中数据块的数量。
·平均行长度-描述数据部分中的平均行长度。
·列中不同值的数量(NDV)-描述数据部分中的列中的唯一值的数量(基数)。
·列中空值数-描述数据部分中的列中的空值的数量。
·数据分布统计值-描述数据部分的列中值的分布。数据分布统计值包括列中的最小值、最大值、平均值和中值。在一个实施例中,除了中值之外,分布统计值还可以包括针对值的频率的更复杂的统计值,本文称为直方图统计值。通过排列列中的值然后基于值本身或基于每个存储桶(bucket)中的值的数量用存储桶存储这些值来生成列的直方图统计值。基于直方图统计值,可以确定列中的热点(频繁)值和非热点(非频繁)值和值范围并且追踪上述值和值范围作为数据分布统计值的一部分。
·索引统计值-当数据部分是索引时,索引统计值包含关于索引的信息,诸如索引级别的数量、索引块的数量以及索引和数据块之间的关系。
·其它数据统计值可以包括一个或多个统计函数的应用的以上统计值的任何组合,诸如上述统计值中的一个或多个中的最小值、最大值、平均值、中值和标准差。
访问统计值
术语“访问统计值”在本文中是指与对数据库系统中的数据部分的各种类型的访问(诸如读取或写入(修改))相关的数值。本申请中的术语“热图(heat map)”是指反映对数据库系统100中的各种数据部分的访问的比较性频率的统计值:具有最近和更频繁访问的数据部分是“热”的,而没有最近访问和较不频繁访问的数据部分是“冷”的。在实施例中,基于对数据部分的访问的数量和基于这些访问时间上有多近来计算数据部分的访问统计值。相应地,对数据部分的时间上较近的访问被赋予比对数据部分的较早访问更多的权重。基于计算出的对数据部分的访问统计值,一些数据部分具有比其它数据部分“更热”的访问。例如,如果来自一个数据部分中的行的数据在最后一天内已被访问了五次,而另一个数据部分中的行仅已被访问一次,则第一数据部分将比第二数据部分“更热”。
在实施例中,为了区分热图的访问级别,访问统计值的不同范围被指定为“热”访问与“冷”访问。如果数据部分的访问统计值在“热”范围内,则该数据部分被表示为热。同样地,如果数据部分的访问统计值在“冷”范围内,则该数据部分被表示为冷。
在实施例中,基于作为数据部分的一部分的多个数据部分的访问统计值来计算数据部分的访问统计值。聚合多个数据部分的访问统计值以产生数据部分的访问统计值。该聚合可以基于诸如平均值、中值、最小值和最大值的聚合函数中的任何一个或组合。例如,数据库的热图包括作为数据库的一部分的数据部分的访问统计值的聚合。
虽然本文针对数据部分访问统计值描述了“热”访问级别和“冷”访问级别,但是本文的方法设想了具有访问统计值的其它访问级别的其它实施例。例如,可以添加访问统计值的范围来表示“暖”级别,“暖”级别表示数据部分具有比“冷”级别更多的访问但具有比“热”级别更少的访问。
在实施例中,针对读取访问类型与写入访问类型收集单独的热图。相同的数据部分基于访问类型可以具有不同的访问统计值。例如,包含日志条目的表的热图统计值具有热写入访问,因为使用该表的应用频繁地向数据库系统100发送命令以添加新的日志条目。但是,如果这个日志表主要是出于历史目的,并且数据库系统100的应用没有正在主动请求表数据,则该日志表具有冷读取访问。
在实施例中,也对数据部分的每个操作类型收集访问统计值。术语“操作统计值”是指描述对数据部分执行的不同类型的操作的测量的数值表示。当由查询优化器126处理查询时,查询优化器126为该查询选择特定的执行计划。特定的执行计划包括由数据库系统100对查询中涉及的数据部分将执行的一个或多个操作。因此,查询优化器126记录关于在查询中对每一个数据部分执行的操作类型的信息。使用来自每个查询执行的这种信息,统计值收集器128计算对特定数据部分执行的特定类型的操作的总数,诸如表200上基于索引的扫描的数量。
例如,数据库系统100利用具有整数类型列“EventID”、可变长度字符串类型列“RecordText”和日期时间类型列“Timestamp”的表“EventLog”来管理数据库,对于这些数据部分中的每一个,统计值收集器128收集操作统计值。例如,当数据库系统100接收到查询:“select*from EventLog where EventID=5”时,查询优化器126可以生成不同查询执行计划,用于遍历该表、识别与为5的EventID值对应的行并且返回该行。在一种情况下,EventLog表支持利用EventID列作为遍历的索引的基于索引的遍历。因此,查询优化器126生成并选择包括对EventID列的唯一索引扫描操作的执行计划以选择与为5的值对应的行。响应于这种操作,统计值收集器128增加对于EventID列数据部分的唯一索引扫描操作的操作统计值。在另一种情况下,如果EventLog表支持全索引遍历但不基于EventID列,则查询优化器126选择包括对EventID列的全索引扫描的操作的执行计划。相应地,统计值收集器128增加针对EventID列的全索引扫描操作的操作统计值。在另一个情景中,完全不为了基于索引的遍历来对EventLog进行索引,并且因此查询优化器126生成并选择针对EventID列的全扫描操作。因此,将增加对EventID列的全扫描的操作统计值。
操作(针对该操作收集操作统计值)的其它非限制性示例包括:连接操作,其中连接数据部分的列以创建另一个数据部分;排序操作,其中基于数据部分的列中的每个值对该列进行排序;以及分组操作,其中基于函数将列中的值分组和/或聚合。
在实施例中,操作统计值是相对的,并且在与对相同数据部分执行的其它类型的操作的比较中进行测量。例如,查询优化器126保持对EventID列执行的所有类型的操作的计数,并且基于对该列的所有操作的百分比来重新计算每个操作类型的操作统计值。可替代地或附加地,操作统计值是绝对的,并且在对数据部分执行的操作的绝对数量中测量操作统计值。例如,如上所述,对EventID列的每个类型的操作都会导致相应的操作统计值的增加。
系统统计值
术语“系统统计值”在本文中是指数据库系统的各种系统资源测量的数值表示。
系统统计值的非限制性示例包括:
·CPU使用-描述CPU的消耗。
·CPU速度-以每秒中平均CPU周期数来描述CPU速度。
·I/O(输入/输出)查找时间-描述用于定位从持久性存储装置中读取的数据的时间。
·I/O传送速度-描述数据库系统在单个读取请求中从持久性存储装置读取数据的速率。
·最大I/O吞吐量-描述数据库系统读取和写入持久性存储装置的最大数据速率。
·并行I/O吞吐量-描述数据库系统并行地读取和写入持久性存储装置的平均数据速率。
·单块读取时间-描述从持久性存储装置中随机读取单个块的平均时间。
·多块读取时间-描述从持久性存储装置中顺序地读取多个块的平均时间。
·多块读取计数-描述在多块读取中的顺序块的平均数量。
·上述示例的任何组合也包括基于上述一个或多个统计值的最小值、最大值、平均值、中值、标准差的一个或多个统计函数的应用。
术语“性能统计值”在本文中是指数据库系统在对被加载到易失性存储器中的数据部分执行操作时的资源消耗的数值表示。数据库系统100使用诸如CPU、存储器和I/O的计算资源来对MF数据的数据部分执行操作。数据库系统使用上述系统统计值来测量这种对于操作的资源消耗。在实施例中,针对MF数据的一个或多个数据部分的每个操作类型收集性能统计值。然后将性能统计值与针对其收集性能统计值的数据部分和操作类型相关联。性能统计值还与当执行操作(针对该操作收集性能统计值)时将数据部分压缩在易失性存储器102中的压缩级别相关联。其它信息也与性能统计值相关联,诸如数据部分的数据统计值和数据类型(针对该数据部分的数据统计值和数据类型收集性能统计值)。
作为非限制性示例,统计值收集器128收集对存储在易失性存储器102中的列的排序操作的CPU使用性能统计值。当数据库系统100对列执行排序操作时,统计值收集器128记录该操作的CPU使用的测量,并将收集到的测量与对该列的排序操作已存在的平均CPU使用进行平均。如果该列在易失性存储器102中以不同级别被重新压缩,则统计值收集器128还为该列创建CPU使用性能统计值的新实例。因此,在这种情况下,单独的性能统计值将与同一列的不同压缩级别相关联。性能统计值的其它示例基于针对数据部分的每种特定类型的扫描操作(诸如,全表扫描或索引扫描)测量得到的I/O查找时间、I/O传送速率或单块读取时间。
用于收集统计值的触发器
可以以许多不同的方式收集统计值。例如,取决于实施,在查询处理的编译阶段期间、在查询的执行期间和/或在没有查询正在被处理时收集统计值。在一个实施例中,一些统计值收集由数据库改变触发:例如,数据库值(新条目、行、列、表)的改变或系统资源(附加处理能力或存储器)的改变触发统计值的收集。
收集访问统计值的一种方法是在访问时记录关于数据部分的访问的信息。当查询执行并检索或修改数据部分中的数据时,执行还导致使用信息的记录与数据部分相关联。使用信息可以包括访问时间戳以及访问/操作的类型。为了收集数据库系统100中的访问统计值,统计值收集器128然后读取关于数据部分的访问信息并基于该访问信息生成热图或操作统计值。可替代地,在查询编译阶段期间更新访问统计值。例如,在执行查询之前,查询优化器126确定查询的访问和操作的类型以及操作要访问的数据部分。因此,查询优化器126可以直接更新受查询执行影响的数据部分的访问统计值。
选择对哪些PF数据进行镜像
在实施例中,要对哪些PF数据进行镜像以及何时加载这些PF数据的决定基于各种因素。例如,如果系统具有大量的易失性存储器102和相对校小的数据库,则镜像数据生成器124可以对整个数据库进行镜像。在这样的示例中,所有PF数据也将被镜像在MF数据104中。另一方面,如果相对于数据库的大小存在相对少量的易失性存储器102,则最优的做法是仅对数据库的很小一部分进行镜像。因此,在实施例中,易失性存储器102中的可用空间量是用于从PF数据112中选择要镜像的数据部分的一个因素。
在另一个实施例中,用于确定是否将PF数据112中的数据部分镜像到易失性存储器102中的MF数据104的其它因素包括与数据部分相关的数据类型和统计值。术语“候选部分”是指PF数据112中的数据部分,针对该数据部分评估统计值和数据类型以确定是否要对数据部分进行镜像。在实施例中,候选部分是在存储器中启用的数据部分或者在存储器中启用的数据部分的子部分。可以以上面针对数据部分描述的任何粒度级别来指定数据部分的子部分。根据这样的实施例,如果表被选择或被自动识别为在存储器中启用的数据部分,则构成该表的列或行的子部分也是在存储器中启用的数据部分。
在实施例中,对候选部分进行评估以基于因素为每个候选部分生成“资格数据”。术语“资格数据”是指用于评估是否在易失性存储器中对候选部分进行镜像并且反映使候选数据部分被镜像在易失性存储器中的估计益处的任何信息。在示例中,资格数据是从0到100的数值分数值,其中对于镜像,当因素被肯定地评估时分数增加,并且当因素被否定地评估时分数减小。如果因素被评估为有利于候选部分的镜像,则候选部分的资格数据被称为“被肯定地修改”。另一方面,如果因素被评估为不利于候选部分的镜像,则资格数据被否定地修改。相应地,基于修改后的资格数据,则在给定可用存储量的情况下将最大提升系统的整体性能的候选部分被选择用于镜像。被选择用于镜像的候选部分在本文中被称为“选定部分”。选定部分的资格数据可以基于因素的改变而改变。在实施例中,数据库系统100基于改变的资格数据来确定从易失性存储器102移除一个或多个选定部分。
图3A是描绘根据一个或多个实施例的用于选择用于镜像的候选数据部分的处理的框图。下面描述的方框中的一个或多个方框可以被省略、重复和/或以不同的顺序执行。因此,图3A中示出的方框的具体布置不应该被解释为限制该方法的范围。
在方框305处,从PF数据112中选择要被评估用于镜像的候选部分。针对候选部分生成初始资格数据。初始资格数据可以既非有利于也非不利于候选部分的镜像,或者可以基于针对候选部分先前评估的资格数据。在方框310处,对候选部分的访问统计值进行评估。如果访问统计值指示候选部分具有读取访问的热的热图,则候选部分被频繁访问用于读取。因此,在易失性存储器102中对候选部分进行镜像将提升数据库系统100的性能,并且候选部分的资格数据被肯定地修改以反映这一点。另一方面,如果候选部分具有读取访问的冷的热图,则资格数据被否定地修改。
可替代地或附加地,还在方框310处对候选部分的写入访问热图进行评估。如果候选部分具有写入访问的热的热图,则候选部分被频繁地写入,并且因此一旦被镜像,将不得不频繁地被重新镜像以避免在易失性存储器102中陈旧,从而消耗数据库系统100资源。因此,在这种情况下,候选部分的资格数据被否定地修改。另一方面,如果候选部分具有冷的写入访问热图,则资格数据被肯定地修改,以反映一旦被镜像,候选部分就不太易于变得陈旧并且不太易于在重新镜像上浪费数据库系统100资源。
例如,先前描述的EventLog表和EventID列被表示为在存储器中启用的数据部分,并且基于相应资格数据的0到100分数对EventLog表和EventID列进行评估以用于加载到易失性存储器中。初始地,EventLog表和EventID列两者都被分配默认分数50,而数据库系统100被配置为有利于对于具有大于75的资格数据分数的任何数据部分的镜像。
从统计值收集器128中检索EventLog表和EventID列的访问统计值。检索到的访问统计值指示两个数据部分都具有热读取访问。相应地,EventID和EventLog数据部分的资格数据分数增加10以具有值60。但是,与EventID列访问统计值不同,EventLog表访问统计值指示热写入访问。因此,EventLog的分数减少10,返回到值50,而EventID的分数保持不变。
在方框315处,该处理对候选部分的数据类型进行评估。候选部分的数据类型可以影响候选部分在易失性存储器102中被压缩的程度,并且因此当候选部分被镜像到易失性存储器102中时候选部分的数据类型可以影响由候选部分占用的存储器空间(如下面进一步讨论的)。如果候选部分的数据类型压缩良好,则候选部分在易失性存储器102中占用较少的存储器空间,并且因此候选部分的资格数据被肯定地修改。另一方面,如果数据类型压缩不佳,则候选部分如果被镜像的话会占用大量存储器空间。因此,具有这种数据类型的候选部分的资格数据被否定地修改。例如,大对象数据类型(LOB)(诸如二进制大对象类型(BLOB)或字符大对象类型(CLOB))较不易于压缩,并且具有非常高的数据大小限制。因此,即使被压缩时,LOB数据类型数据也会占用大量存储器空间。因此,如果候选部分包含LOB数据类型,则资格数据被否定地修改。类似地,可变长度串数据类型也可能占用大量存储器空间,因为这种数据类型的数据的大小限制较大。因此,虽然可变长度串数据类型比LOB数据压缩更好,但具有这种数据类型的候选部分可能被否定地评估。相反地,与日期和时间相关的数据类型通常具有固定的大小限制并且通常压缩良好。因此,如果候选部分是与日期和时间相关的数据类型,则候选部分的资格数据被肯定地修改。类似地可以针对资格数据对其它数据类型进行评估。
继续EventLog表和EventID列的评估示例,对数据部分的数据类型进行评估。对于EventLog表,对EventLog表中的所有列(包括EventID列)进行评估以用于修改EventLog表资格数据,而对于EventID列,对EventID列的数据类型进行评估以用于修改EventID资格数据。由于EventID列是不影响压缩级别的整数类型,因此评估不修改EventID资格数据分数。除了EventID列之外,EventLog表还包含日期时间类型列Timestamp以及字符串类型列Record。相应地,由于日期时间类型和字符串类型列压缩良好,而整数类型不影响压缩,因此对于EventLog表,这些列的资格数据分数被平均。平均分数被计算为6.66((10+10+0)/3),并且EventLog的资格数据分数相应地增加到66.66。
在方框320处,针对候选部分对操作统计值进行评估。如果以对候选部分进行镜像将提高访问速度的这种方式访问候选部分,则候选部分的资格数据被肯定地修改。例如,如果基于操作统计值,对候选数据部分最常见的操作是I/O密集型的,诸如全表扫描和排序操作,则对候选部分进行镜像充分地提升了性能,并且候选数据的资格数据被肯定地修改。另一方面,如果对候选部分的常见操作需要从PF数据加载其它数据部分,则对候选部分进行镜像可能不会显著提升这样的操作的性能,并且资格数据被否定地修改。例如,通常对多于一个的数据部分执行连接或分组操作,因此该处理不利于有这些操作的候选部分,并且这些候选部分的资格数据被否定地评估。
继续EventLog表和EventID列的评估示例,从统计值收集器128中检索EventLog表和EventID列的操作统计值以用于进一步评估资格数据。在这个示例中,基于EventLog的操作统计值,EventLog的最频繁的操作是排序操作。因此,EventLog的资格数据分数进一步从值66.66增加到值76.66。
另一方面,在这个示例中,EventID列的最频繁的操作是连接操作。由于连接操作可能需要将另一个数据部分加载到易失性存储器中以用于评估连接操作,因此EventID列的资格数据分数从值60减少到值50。
在方框325处,对候选部分的数据统计值进行评估以作为用于镜像的另一个因素。如果候选部分具有将在易失性存储器102中占用大量存储器空间的大量数据,则资格数据被否定地修改。另一方面,如果候选部分具有较少的数据或具有可以被良好压缩的数据,则资格数据被肯定地修改。例如,该处理对行数、块数和平均行长度统计值进行评估以确定数据的大小。对列中的不同值的数量和空值的数量进行评估以确定如果候选部分被镜像的话该候选部分将压缩的程度。如果不同值的数量低,则候选部分将更好地压缩,并且因此资格数据将被肯定地修改。如果空值的数量统计值高,则候选部分也将更好地压缩,并且因此资格数据也被肯定地修改。类似地,对候选部分的数据分布统计值进行评估以确定是否候选部分将良好地压缩。如果候选部分具有许多常用的值/值范围,则候选部分将良好地压缩,并且因此资格数据被肯定地修改。相反地,如果候选部分具有许多不常用的值/值范围,则候选部分将压缩得不好,并且因此资格数据被否定地修改。
继续EventLog表和EventID列的评估示例,从统计值收集器128中检索EventLog和EventID列的数据统计值以用于进一步评估资格数据。EventLog表和EventID列的数据统计值指示行计数,该行计数近似等于由数据库系统100管理的其它数据部分的平均行计数,统计值收集器128正在针对该其他数据部分收集数据统计值。但是,由于EventID列包含每一行的唯一整数,因此EventID列具有高基数值,而EventLog的其它列具有非常低的基数。相应地,EventID列资格数据分数减少10,而EventLog表资格数据基于每一列的数据统计值评估的平均分数而被修改。Timestamp和Record列的数据统计值有利于镜像,而EventID列的数据统计值不利于镜像。因此,EventLog表资格数据分数可以增加:(10+10-10)/3=3.33,以具有值80。
在方框327处,候选部分的资格数据与候选部分相关联地存储。在方框330处,如果候选部分的资格数据有利于候选部分的镜像,则该处理进行到方框335以对数据库系统100的系统统计值进行评估。否则,候选部分的资格数据不利于候选部分的镜像,并且该处理然后进行到方框305,其中选择下一个候选部分以用于评估所讨论的因素。
继续EventLog表和EventID列的评估示例,EventLog表的资格数据分数被评估为80,而EventID列的资格数据分数被评估为40。EventLog资格数据分数超过75,并且因此EventLog表有利于镜像到易失性存储器102,而EventID列不利于镜像到易失性存储器102。
在方框335处,对数据库系统100的系统统计值进行评估以确定系统是否能够处理将候选部分镜像到易失性存储器102并且从易失性存储器102访问候选部分。访问MF数据虽然更快,但是由于MF数据的附加解压缩步骤而可能需要附加的系统资源,如下面进一步讨论的。如果数据部分变得陈旧,则系统进一步花费资源用于压缩数据部分。相应地,在方框335处,基于系统统计值,该处理确定数据库系统100是否具有用于从易失性存储器102访问候选部分的附加资源。例如,如果CPU使用低并且CPU速度足以从易失性存储器102访问候选数据部分,则选择候选部分用于镜像并从易失性存储器102访问候选部分。相反地,如果CPU使用高和/或CPU速度不足以从易失性存储器访问候选数据部分,则将在某个后面的时间点对系统统计值进行重新评估。类似地,在实施例中,该处理对系统的I/O和读取时间相关的统计值进行评估,以确定盘访问速度是否不足并且因此需要对更多PF数据进行镜像以加速数据访问。例如,如果盘的最大I/O吞吐量和/或并行吞吐量低并且各种盘读取和查找时间长,则对更多PF数据进行镜像将提升系统性能,因为数据将从易失性存储器102中而不是从持久性存储装置110中被访问。但是,如果统计值(诸如最大I/O吞吐量)高并且多块/单块时间低,则数据库系统100正在以足够的速度从持久性存储装置110服务数据,并且因此镜像不是必需的并且被延迟到稍后为止以避免消耗系统资源。如果在方框335处评估的系统统计值有利于镜像,则在方框340处,该处理进行到方框345以确定易失性存储器102中的可用空间。
在方框345处,对易失性存储器102中的空间进行评估以确定候选部分是否可以存储在易失性存储器102中的可用空间中。如果在方框345处该处理确定不存在用于候选部分的可用存储器空间,则该处理继续在方框305处选择下一个候选部分。否则,该处理继续到方框350以指定用于在易失性存储器102中进行镜像的候选部分。
在相关实施例中,如果在方框345处,该处理确定在易失性存储器102中不存在用于候选部分的可用存储器空间,则该处理确定是否可以从易失性存储器中移除已经在易失性存储器102中的任何数据部分以使得存储器空间可用于候选部分。如果数据部分的资格数据已经变为不利于镜像或者数据部分的资格数据小于候选部分的资格数据,则从易失性存储器102中移除该数据部分。在图3B中进一步描述移除数据部分的流程图。
在实施例中,数据部分包括数据的子部分,基于所讨论的用于镜像的资格的因素而对数据的子部分自身不同地进行评估。可以将候选部分评估为要被镜像到易失性存储器102,而候选部分的子部分可以基于子部分的资格数据被评估为不被镜像到易失性存储器102。根据一个实施例,修改候选部分以排除被评估为不被镜像的子部分。例如,如果表基于上面所讨论的因素已经被评估为要被镜像,而表的特定列已经被评估为不被镜像,则该表在没有特定列的情况下被镜像,即,除了特定列以外,该表的其它列将被镜像。
继续EventLog表和EventID列的示例,EventLog表可以在没有EventLog表的EventID列的情况下被镜像到易失性存储器102中。由于EventID列已经被评估为不利于镜像,而相反地,EventLog表(EventID列是该EventLog表的子部分)已经被评估为有利于镜像,因此EventLog表可以在没有EventID列的情况下被镜像。
根据其它实施例,候选部分的子部分被评估为要被镜像,而候选部分本身被评估为不被镜像。在这样的实施例中,候选的子部分被镜像到易失性存储器102,而候选部分的其它部分不被镜像。
在实施例中,在数据库系统100上周期性地执行图3A所描述的处理。可以在由数据库系统100的用户指定的时间或者由数据库系统100基于系统统计值而确定的时间执行该处理。可替代地,基于可以由用户指定的触发器来执行该处理。触发器可以包括易失性存储器102中的空间的可用性或者数据库系统100的任何上述指定统计值跨越一个或多个阈值。
图3B是描绘根据一个或多个实施例的用于指定从MF数据移除的镜像数据部分的处理的框图。下面描述的方框中的一个或多个方框可以被省略、重复和/或以不同的顺序执行。因此,图3B中示出的方框的具体布置不应该被解释为限制该方法的范围。
在方框365处,从MF数据104中选择要被评估用于从易失性存储器102中移除的镜像部分。为该镜像数据部分生成初始资格数据。初始资格数据可以既非有利于也非不利于镜像数据部分的移除,或者可以基于针对镜像数据部分先前评估的资格数据。在方框370处,类似于在图3A的方框310处描述的评估,对镜像数据部分的访问统计值进行评估。类似于在图3A的方框310处描述的资格数据的修改,镜像数据部分的资格数据也被修改。
在方框375处,类似于在图3A的方框315处描述的评估,对镜像数据部分的数据类型进行评估。类似于在图3A的方框315处描述的资格数据的修改,镜像数据部分的资格数据也被修改。
在方框380处,类似于在图3A的方框320处描述的评估,对镜像数据部分的操作统计值进行评估。类似于在图3A的方框320处描述的资格数据的修改,镜像数据部分的资格数据也被修改。
在方框385处,类似于在图3A的方框325处描述的评估,对镜像数据部分的数据统计值进行评估。类似于在图3A的方框325处描述的资格数据的修改,镜像数据部分的资格数据也被修改。
在方框387处,镜像数据部分的资格数据与镜像数据部分相关联地存储。在方框390处,如果镜像数据部分的资格数据有利于从易失性存储器102中移除镜像数据部分,则在方框395处镜像数据部分被指定用于移除。在一个实施例中,将镜像数据部分的资格数据与阈值资格数据进行比较以确定镜像数据部分的资格数据是否有利于从易失性存储器102中移除镜像数据部分。在另一个实施例中,将镜像数据部分的资格数据与一个或多个选定部分资格数据进行比较。如果相对于选定部分资格数据,镜像数据部分资格数据较不利于镜像,则镜像数据部分被指定用于从易失性存储器102中移除。另一方面,如果镜像数据部分资格数据比选定部分资格数据更有利于镜像,则镜像数据部分作为MF数据104的一部分保留在易失性存储器102中。
在实施例中,数据部分包括数据的子部分,基于所讨论的用于从易失性存储器中移除的资格的因素而对数据的子部分自身不同地进行评估。候选部分可以被评估为要从易失性存储器102中被移除,而候选部分的子部分可以基于子部分的资格数据而被评估为保留在易失性存储器102中。根据一个实施例,修改镜像部分以排除被评估为保留在易失性存储器102中的子部分。例如,如果易失性存储器102中的表基于上面所讨论的因素已经被评估为要被移除,而该表的特定列已经被评估为保留在易失性存储器102中,则该表在没有特定列的情况下被移除,即,除了特定列以外,表的其它列将从易失性存储器102中被移除。
根据其它实施例,候选部分的子部分被评估为要从易失性存储器102中被移除,而候选部分本身被评估为保留在易失性存储器102中。在这样的实施例中,候选的子部分从易失性存储器102中被移除,而候选部分的其它部分保留在易失性存储器中。
在实施例中,在数据库系统100上周期性地执行图3A所描述的处理。可以在由数据库系统100的用户指定的时间或者由数据库系统100基于系统统计值而确定的时间执行该处理。可替代地,基于可以由用户指定的触发器来执行该处理。触发器可以包括易失性存储器102中的空间的可用性或者数据库系统100的任何上述指定统计值跨越一个或多个阈值。
MF数据的组织
根据一个实施例,作为MF数据104的一部分,选定部分与PF数据112中选定部分的拷贝不同地被格式化。即使MF数据104使用与PF数据112不同的格式,MF数据104也以与PF数据112的组织对应的方式来被组织。例如,在持久性存储装置110中,可以将PF数据112存储在驻留在扩展区中的块中,其中扩展区又被组织成段。在这些情况下,在易失性存储器102内,可以基于MF数据104所属的扩展区和/或段来组织MF数据104。因此,列向量220可以被划分成向量部分,其中每个向量部分对应于特定范围的扩展区和/或段。
在扩展区内,数据通常按rowid(行标识)进行排序。类似地,在一个实施例中,MF数据104基于rowid进行排序。例如,在列向量220中的值基于用于对块202、204和206中的PF数据112进行排序的相同rowid进行排序。具体而言,rowid r1紧挨着在rowid r2之前,所以在列向量220中r1c1紧挨着在r2c1之前,并且在块202中r1c1至r1c3紧挨着在r2c1至r2c3之前。
在替代实施例中,MF数据104中的数据项中的一些或全部没有在MF数据104内按rowid进行排序。以不同的顺序存储数据项可能是有用的,例如,如果不同的排序产生好得多的压缩。作为另一个示例,列向量可以初始地按rowid进行排序。但是,当新的更新被“合并到”列向量中时(如将在下文更详细讨论的),可以将所更新的值附到现有列向量的尾部以避免需要解压缩和重新压缩现有列向量。
当列向量内的数据项不按rowid排序时,可以在rowid上建立存储器中索引,以在MF数据104内快速定位与任何给定rowid相关联的数据项。无论列行向量内的数据项是否基于rowid进行排序,都可以通过维护与列向量结合的rowid的向量来建立rowid到项(rowid-to-item)的映射。在镜像数据应用中描述了MF数据104的组织的其它实施例。
当由数据库系统100接收到要被执行的查询时,可以使用MF数据104和PF数据112两者来满足查询。在MF数据104的组织与PF数据112的组织对应的实施例中,对于数据库服务器而言,分离MF数据104和PF数据112之间的数据库操作更容易。例如,数据库服务器可以确定要使用MF数据104来满足相对于一个范围的扩展区(例如,扩展区1至扩展区10)的查询,而要使用PF数据来满足相对于另一个范围的扩展区(例如,扩展区11至扩展区20)的查询。在镜像数据应用中进一步描述了使用MF数据104来满足查询的其它实施例。
压缩
如上所述,可以压缩MF数据104。但是,根据一个实施例,并非所有MF数据都需要以相同的方式被压缩,或者被压缩到相同的程度。例如,如果确定来自表200的列c1的数据被频繁使用,并且来自列c3的数据不被频繁使用,则可以轻微压缩或者无压缩在列向量220中的数据,而高度压缩在列向量222中的数据。
压缩算法以及由算法使用的用于压缩MF数据104的每个部分的压缩级别可以由用户来指定,或者可以由数据库服务器基于各种因素自动地确定。可能的压缩算法包括但不限于基于字典的压缩、行程长度编码(run-length encoding,RLE)、Ozip压缩等。在于2014年7月21日提交的美国专利申请14/337/113“OZIP Compression And Decompression”中描述了Ozip压缩,该专利申请的内容通过引用并入本文。
由数据库服务器使用的确定MF数据104的每个部分如何被压缩的因素可以包括例如每个部分被访问的频率、以及在该部分中有多少数据、以及多少易失性存储器是可用的。一般而言,MF数据104的一部分越频繁地被访问,数据就越少被压缩。作为另一个一般性规则,可用于存储MF数据104的易失性存储器越少和/或MF数据104的该部分的大小越大,压缩就越多。
图4是描绘根据一个或多个实施例的用于为选定部分选择压缩级别的处理的框图。下面描述的方框中的一个或多个方框可以被省略、重复和/或以不同的顺序执行。因此,图4中示出的方框的具体布置不应该被解释为限制该方法的范围。
在方框410处,在实施例中,对选定部分的访问统计值进行评估。如果访问统计值指示选定部分具有读取访问的热的热图,则该选定部分从易失性存储器102被频繁地访问。为了提升数据库系统100的性能,针对选定部分降低压缩级别,使得数据库系统100将在每次访问上花费较少资源来解压缩选定部分。另一方面,如果候选部分具有读取访问的冷的热图,则增加压缩级别以节省易失性存储器102中的空间。
在方框415处,在实施例中,该处理对候选部分的数据类型进行评估。选定部分的数据类型可能影响选定部分在易失性存储器102中可以被压缩的程度。一些数据类型比其它数据类型更好地压缩,并且因此这种数据类型的数据部分对于相同的信息量占用更少的存储器。因此,通过对选定部分的数据类型进行评估,可以将压缩级别修改为对选定部分的数据类型最优。例如,大对象数据类型(LOB)(诸如二进制大对象类型(BLOB)或字符大对象类型(CLOB))较不易于压缩,并且因此具有LOB数据类型的选定部分的压缩级别降低。相反地,日期和时间相关的数据类型通常压缩良好。因此,如果选定部分是日期和时间相关的数据类型,则选定部分的压缩级别增加。其它数据类型可以被类似地评估以用于修改选定部分的压缩级别。
在方框420处,在实施例中,针对选定部分对操作统计值进行评估。如果基于选定部分的操作统计值对选定部分的大部分操作是计算资源密集型的,则以较高压缩级别来压缩选定部分可能会恶化数据库系统100的性能。从较高压缩级别对选定部分的解压缩将进一步加重数据库系统100的资源负担,可以预计资源密集型操作将额外加重数据库系统100的资源负担。另一方面,如果对于选定部分使用较低压缩级别,则数据库系统100的性能受影响较小。相应地,如果在方框420处操作统计值表示针对选定部分的资源密集型操作,则针对选定部分的压缩级别被修改为较低值。表示针对选定部分的大多数为非资源密集型操作的操作统计值可能导致压缩级别增加。例如,如果基于选定部分的操作统计值,最常见的操作是资源密集型分组或排序操作,则压缩级别被修改为较低值。但是,如果基于操作统计值,选定部分的大多数操作都是与全扫描相比较不CPU密集型的基于索引的扫描,则压缩级别增加。
在方框425处,在实施例中,对与选定部分相似的一个或多个数据部分的性能统计值进行评估。相似的数据部分是数据库系统100基于那些数据部分和选定部分的数据类型和/或数据统计值中的相似性而认为相似的那些数据部分。例如,如果选定部分是日期时间数据类型,并且数据库系统100包括日期时间数据类型的其它数据部分的性能统计值,则选择那些其它相似数据部分的性能统计值用于评估。同样地,如果其它数据部分具有相似数量的空值,则可以对其它相似数据部分的性能统计值进行评估以用于确定选定部分的压缩级别。在各种实施例中,相似度可以变化。在一些实施例中,如果数据类型匹配,则建立数据类型的相似性,而在其它实施例中,如果数据类型共享相当大的共性,则建立相似性(例如,不同长度的char数据类型(包括varchar)被认为是相似的)。此外,在一些实施例中,使用数值百分比来确定相似性。例如,如果不同数据部分的数据统计值在相应数据统计值的数值的10%内匹配,则不同数据部分被认为是相似的。
然后对相似数据部分的性能统计值进行评估以确定操作在各种压缩级别下的历史性能。在实施例中,如果性能统计值可用于不同的压缩级别,则该评估产生最优压缩级别。可以通过比较相似数据部分的不同压缩级别的性能统计值来得到最优压缩级别。一旦确定了最优压缩级别,选定部分的压缩级别就增加、保持不变或减小以更接近或精确匹配最优压缩级别。例如,假定选定部分与在数据库系统100中具有相关联的性能统计值的两个数据部分具有相似数量的空值。这两个数据部分分别具有压缩级别三(3)和九(9)。基于性能统计值,如果具有压缩级别9的第一相似数据部分比具有压缩级别3的第二相似数据部分多消耗的资源可忽略,则数据库系统100选择压缩级别9为最优压缩级别。然后,选定部分的压缩级别增加或者保持不变或者减小以接近或匹配最优压缩级别9。
在其它实施例中,相似数据部分的性能统计值与性能统计值中的预定阈值进行比较。如果性能统计值不满足阈值,则选定部分的压缩级别相对于相似数据部分的压缩级别以将选定部分的资源消耗调整为更接近地满足阈值的方式进行调整。例如,阈值可以表示操作类型消耗的最大CPU使用。如果相似数据部分的性能统计值的CPU使用统计值低于CPU使用阈值,则选定部分的压缩级别被调整为高于相似数据部分的压缩级别或保持不变。相反地,如果CPU使用统计值高于最大CPU使用阈值,则选定部分的压缩级别被调整为低于相似数据部分的压缩级别以消耗易失性存储器102中更少的资源。
在方框430处,一旦基于之前方框的评估来确定选定部分的压缩级别,就以所确定的压缩级别来压缩选定部分。然后,压缩后的选定部分被加载到易失性存储器102中。在各种实施例中,关于何时创建MF数据104的决定基于各种其它因素。例如,如果在系统启动时有足够的时间可用,则在启动时将压缩后的选定部分预加载到易失性存储器102中。在其它实施例中,如在镜像数据应用中进一步描述的那样,选定的压缩部分按需被加载。
在实施例中,可以针对任何数量的选定部分重复图4的方框410-430以确定适当的压缩级别并将选定部分加载到易失性存储器102中。
在一些实施例中,在数据库系统100上周期性地执行图4所描述的处理。可以在由数据库系统100的用户指定的时间或者由数据库系统100基于其系统统计值而确定的时间执行该处理。可替代地,基于可以由用户指定的触发器来执行该处理。触发器可以包括易失性存储器102中的空间的可用性或者数据库系统100的任何上述指定统计值跨越一个或多个阈值。
对MF数据104中的选定部分重复图4中的处理可能导致改变已经被加载在易失性存储器102中的选定部分的压缩级别。如果该处理得出来自易失性存储器102中的MF数据104的选定部分需要具有与当前压缩级别不同的压缩级别,则以新压缩级别将选定部分重新压缩,然后将选定部分加载回易失性存储器102中。
即使可以在MF数据104内压缩数据项,也可能不需要解压缩MF数据104来使用该MF数据。例如,如于2012年12月7日提交的美国专利申请13/708,054所描述的,直接对压缩后的值执行向量处理操作,该专利申请的全部内容通过引用并入本文。如在该申请中还描述的,在压缩后的列向量值已经被传送到CPU之后,也有可能在芯片上执行解压缩。
在MF数据104被压缩的一些实施例中,在易失性存储器102内将MF数据104组织成“存储器中压缩单元”(IMCU)。每个IMCU存储一组不同的MF数据,该组数据可以对应于或不对应于选定部分。数据到IMCU的映射指示每个IMCU中包含哪个选定部分。在一个实施例中,数据到IMCU的映射可以是MF数据的元数据的一部分。在镜像数据应用中进一步描述了IMCU。
为了确定MF数据104是否具有处理查询所需的数据,并且如果是的话,为了找到处理查询所需的MF数据104,数据库服务器需要知道哪些PF数据在MF数据104中被镜像,并且具体而言,哪些特定的PF数据被每个IMCU镜像。因此,根据一个实施例,将MF数据104的元数据维护在易失性存储器102中,该元数据包括数据到IMCU的映射。在镜像数据应用中进一步描述了MF数据104的元数据。
在一些实施例中,提供了当对PF数据112执行更新、插入和删除时用于保持镜像格式数据104与PF数据112同步的机制。在镜像数据应用中进一步描述了保持MF数据104与PF数据112同步。
为了减少保持与MF数据104同步所需的解压缩操作和解压缩的量,一个实施例利用日志来对MF数据104进行隐式更新。在镜像数据应用中进一步描述了日志。
因为MF数据104仅仅是PF数据112中的一些数据的镜像(尽管以不同的格式),因此被包含在MF数据104中的所有数据项也在PF数据112中。因此,对于需要访问在MF数据104中被镜像的数据项的任何查询,数据库服务器具有从MF数据104、从PF数据112、或者部分从MF数据104和部分从PF数据112来获得该数据的选择。在镜像数据应用中描述了用于响应于查询而确定从哪里获得数据的各种实施例。
加载和清除MF数据
在基于MF数据104对查询进行服务之前,可以基于数据库系统100中的一个或多个“加载”事件将MF数据104加载到易失性存储器102中。在一个实施例中,MF数据104在数据库系统启动时被预加载到易失性存储器中。例如,可以在针对包含将被MF数据104镜像的数据项的在存储器中启用的数据结构来执行任何数据库操作之前由后台进程执行预加载。
MF数据104可以一次被创建一个IMCU。在多实例环境中,持久存储的元数据可以用来确定将哪些MF数据预加载到哪个数据库实例中。这样的元数据可以包括例如MF数据到IMCU(MF-data-to-IMCU)的映射和IMCU到实例(IMCU-to-instance)的映射。
代替简单地预加载MF数据104,可以在由数据库操作访问对应的PF数据时生成MF数据104中的一些或全部。例如,假定指派数据库实例1来托管表200的列c1和c2的列向量。代替在启动时构建和加载这些列向量,数据库实例1可以初始地不生成MF数据。相反,数据库实例1可以等待直到数据库命令需要表200的扫描为止。因为尚未创建MF数据,因此完全基于PF数据112来执行扫描。在该扫描期间,将访问构建c1和c2的列向量所需的值。因此,可以在该时间建立c1和c2的列向量,而不招致任何附加的盘访问。
MF数据的按需加载可以与预加载结合使用。例如,可以在实例1启动时创建要在实例1上被托管的MF数据104中的一些。可以在由查询访问数据时构建MF数据104的其它部分。
在一个实施例中,用户可以设置配置选项来指示要预加载哪些MF数据以及要按需加载哪些MF数据。在替代实施例中,数据库服务器自动确定MF数据104的哪些部分是被预加载的,以及哪些部分是按需被加载的。一般而言,数据项被使用得越频繁,数据库服务器将越可能自动地将数据项预加载到MF数据中,使得即使需要数据项的第一个数据库操作也具有从MF数据104中获得数据的选项。
最终,当数据库系统100断电时从易失性存储器102中清除MF数据104。但是,根据一个或多个实施例,被指定用于移除的MF数据104中的数据部分在除断电之外的一个或多个“清除”事件中从易失性存储器102中被移除。例如,数据库系统100可以具有规划的任务以从易失性存储器102中周期性地移除所指定的数据部分。在另一个实施例中,用于移除的数据部分的实际指定可以导致移除该数据部分的清除事件。在又一个实施例中,清除事件由易失性存储器102的可用存储器空间(或任何其它系统统计值)跨越阈值而触发。例如,如果易失性存储器102仅具有5%的空闲存储器,则触发清除事件以从易失性存储器102中移除被指定用于移除的数据部分。
数据库管理系统
数据库管理系统(DBMS)管理数据库。DBMS可以包括一个或多个数据库服务器。数据库包括存储在持久性存储器机制(诸如一组硬盘)上的数据库数据和数据库字典。数据库数据可以存储在一个或多个数据容器中。每个容器包含记录。每个记录内的数据被组织成一个或多个字段。在关系DBMS中,数据容器被称为表,记录被称为行,并且字段被称为列。在面向对象的数据库中,数据容器被称为对象类,记录被称为对象,并且字段被称为属性。其它数据库体系架构可以使用其它术语。
在实施例中,DBMS可以连接到可以存储一个或多个表的节点集群或包括可以存储一个或多个表的节点集群。DBMS可以类似于管理存储在持久性存储装置中的表来管理存储在节点集群上的表。
用户通过向数据库服务器提交使得数据库服务器对存储在数据库中的数据执行操作的命令来与DBMS的数据库服务器交互。用户可以是运行在客户端计算机上的与数据库服务器交互的一个或多个应用。本文中多个用户也可以被统称为用户。
如本文所使用的,“查询”是指数据库命令并且可以是符合数据库语言的数据库语句的形式。在一个实施例中,用于表达查询的数据库语言是结构化查询语言(SQL)。存在许多不同版本的SQL,一些版本是标准的并且一些是专有的,并且存在各种扩展。数据定义语言(“DDL”)命令被发布到数据库服务器以创建数据库对象或对数据库对象进行配置,数据库对象诸如表、视图或复杂数据类型。SQL/XML是在对象-关系数据库中操纵XML数据时使用的SQL的常见扩展。虽然本文使用术语“SQL”描述本发明的实施例,但是本发明不仅仅限于该特定数据库查询语言,并且可以与其它数据库查询语言和构造结合使用。
客户端可以通过建立数据库会话(本文中被称为“会话”)向数据库服务器发出一系列请求,诸如执行查询的请求。会话包括为客户端建立的到数据库服务器(诸如数据库实例)的特定连接,客户端可以通过该连接发出一系列请求。数据库服务器可以维护关于该会话的会话状态数据。会话状态数据反映会话的当前状态,并且可以包含用户(针对该用户建立会话)的身份、由用户使用的服务、对象类型的实例、语言和字符集数据、关于会话的资源使用的统计值、由会话内执行软件的进程生成的临时变量值、以及指针和变量以及其它信息的存储。会话状态数据还可以包含为会话配置的执行计划参数。
多节点数据库管理系统由共享对相同数据库的访问的互连节点组成。通常,节点经由网络互连并且以变化的程度共享对共享存储装置的访问,例如,对一组盘驱动器和存储在该组盘驱动器上的数据块的共享访问。多节点数据库系统中的节点可以是经由网络互连的一组计算机(例如,工作站、个人计算机)的形式。可替代地,该节点可以是网格的节点,其中网格由节点组成,这些节点以服务器刀片的形式与机架上的其它服务器刀片互连。
多节点数据库管理系统中的每个节点托管数据库服务器。诸如数据库服务器的服务器是集成软件组件和计算资源分配的组合,其中计算资源诸如存储器、节点和用于在处理器上执行集成软件组件的处理,软件和计算资源的组合专用于代表一个或多个客户端执行特定的功能。
可以将来自多节点数据库系统中的多个节点的资源分配为运行特定数据库服务器的软件。软件和来自节点的资源分配的每个组合是在本文中被称为“服务器实例”或“实例”的服务器。数据库服务器可以包括多个数据库实例,这些数据库实例中的一些或全部在包括单独服务器刀片的单独计算机上运行。
硬件概述
根据一个实施例,本文所描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行该技术,或者可以包括诸如被永久性编程以执行该技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括被编程以根据固件、存储器、其它存储装置或组合中的程序指令来执行该技术的一个或多个通用硬件处理器。这种专用计算设备还可以组合定制硬连线逻辑、ASIC或FPGA与定制的编程来实现该技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者结合硬连线和/或程序逻辑来实现该技术的任何其它设备。
例如,图5是图示可以在其上实现本发明的实施例的计算机系统500的框图。计算机系统500包括总线502或者用于传送信息的其它通信机制,以及与总线502耦合用于处理信息的硬件处理器504。硬件处理器504可以是例如通用微处理器。
计算机系统500还包括耦合到总线502以用于存储信息和要由处理器504执行的指令的主存储器(本文也称为“易失性存储器”)506,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器506还可以用于在要由处理器504执行的指令的执行期间存储临时变量或其它中间信息。这种指令在被存储在处理器504可访问的非暂态存储介质中时,该指令使计算机系统500变为被定制用以执行指令中所指定的操作的专用机器。
计算机系统500还包括耦合到总线502以用于为处理器504存储静态信息和指令的只读存储器(ROM)508或者其它静态存储设备。提供了诸如磁盘、光盘或固态驱动器的存储设备510,并且存储设备510耦合到总线502以用于存储信息和指令。
计算机系统500可以经由总线502耦合到诸如阴极射线管(CRT)的显示器512以用于向计算机用户显示信息。包括字母数字键和其它键的输入设备514耦合到总线502,用于向处理器504传送信息和命令选择。另一个类型的用户输入设备是光标控件516,诸如鼠标、轨迹球或者光标方向键,用于向处理器504传送方向信息和命令选择并且用于控制显示器512上的光标移动。这种输入设备通常具有在两个轴(第一个轴(例如x)和第二个轴(例如y))中的两个自由度,这允许设备在平面内指定位置。
计算机系统500可以使用定制硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文所描述的技术,定制硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑与计算机系统结合,使得计算机系统500成为或者将计算机系统500编程为专用机器。根据一个实施例,由计算机系统500响应于执行被包含在主存储器506中的一条或多条指令的一个或多个序列的处理器504而执行本文的技术。可以从诸如存储设备510的另一个存储介质将这种指令读取到主存储器506中。执行被包含在主存储器506中的指令的序列使得处理器504执行本文所述的处理步骤。在替代实施例中,硬连线的电路系统可以代替软件指令或者与软件指令组合使用。
如在本文所使用的,术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非暂态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘、磁盘或固态驱动器,诸如存储设备510。易失性介质包括动态存储器,诸如主存储器506。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带,或者任何其它磁性数据存储介质、CD-ROM、任何其它光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其它存储器芯片或盒式磁带。
存储介质与传输介质截然不同但是可以与传输介质结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线502的引线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信中产生的那些波。
各种形式的介质可以参与把一条或多条指令的一个或多个序列携带到处理器504以供执行。例如,最初可以在远端计算机的磁盘或固态驱动器上携带指令。远端计算机可以将指令加载到该远端计算机的动态存储器中并且使用调制解调器经电话线发送指令。位于计算机系统500本地的调制解调器可以在电话线上接收数据并且使用红外线发射器将数据转换成红外线信号。红外线检测器可以接收在红外线信号中携带的数据并且适当的电路系统可以将数据放在总线502上。总线502将数据携带到主存储器506,处理器504从该主存储器506检索并执行指令。由主存储器506接收的指令可以可选地在被处理器504执行之前或之后被存储在存储设备510上。
计算机系统500还包括耦合到总线502的通信接口518。通信接口518提供耦合到网络链路520的双向数据通信,其中网络链路520连接到本地网络522。例如,通信接口518可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器或者提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口518可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。也可以实现无线链路。在任何这种实现中,通信接口518发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
网络链路520通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路520可以通过本地网络522提供到主计算机524或者到由互联网服务提供商(ISP)526操作的数据装置的连接。ISP 526进而通过现在通常被称为“互联网”528的全球分组数据通信网络提供数据通信服务。本地网络522和互联网528两者都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路520上并通过通信接口518的信号是传输介质的示例形式,其中该信号将数字数据携带到计算机系统500或者从计算机系统500携带数字数据。
计算机系统500可以通过(一个或多个)网络、网络链路520和通信接口518发送消息和接收数据,包括程序代码。在互联网示例中,服务器530可以通过互联网528、ISP 526、本地网络522和通信接口518传送用于应用程序的所请求的代码。
接收到的代码可以在其被接收时由处理器504执行,和/或存储在存储设备510或其它非易失性存储装置中以供以后执行。
在前述说明书中,已经参考许多具体细节描述了本发明的实施例,这些具体细节可以因实施而异。因此,说明书和附图被认为是说明性的而不是限制性的意义。本发明的范围的唯一且排他的指示以及申请人所预期作为本发明的范围的内容,是从本申请产生的一组权利要求的以该组权利要求产生的具体形式的书面范围和等效范围,该组权利要求包括任何后续的校正。
Claims (19)
1.一种计算机实现的方法,包括:
由数据库服务器维护持久性存储装置上的数据库;
其中所述数据库包括已经被指定为有资格在易失性存储器内用于镜像的数据部分;
由数据库服务器执行对与所述数据部分相关的一个或多个因素的评估;
基于所述评估,生成与所述数据部分对应的资格数据;
其中所述资格数据(a)反映使所述数据部分在所述易失性存储器中被镜像的估计益处,以及(b)由所述数据库服务器基于所述一个或多个因素来确定;
基于所述资格数据,自动地改变所述数据部分的镜像状态;
其中自动地改变所述数据部分的镜像状态包括以下中的一个:
当所述数据部分当前未在所述易失性存储器中被镜像时,使得所述数据部分在所述易失性存储器内被镜像,或者
当所述数据部分当前在所述易失性存储器中被镜像时,使得所述数据部分从所述易失性存储器中被移除。
2.如权利要求1所述的方法,还包括:
由所述数据库服务器周期性地或基于以下中的一个或多个来执行对与所述数据部分相关的所述一个或多个因素的一个或多个评估:
a)达到用户指定的时间,
b)达到由所述数据库服务器基于系统统计值确定的时间,
或
c)一个或多个用户指定的触发器,其中所述一个或多个用户指定的触发器包括以下中的一个或多个:易失性存储器中的空间的可用性或者数据库服务器的统计值跨越一个或多个阈值;
基于所述一个或多个评估,生成与所述数据部分对应的新的资格数据;
基于所述新的资格数据,自动地改变所述数据部分的镜像状态;
其中自动地改变所述数据部分的镜像状态包括以下中的一个:
当所述数据部分当前未在所述易失性存储器中被镜像时,使得所述数据部分在所述易失性存储器内被镜像,或者
当所述数据部分当前在所述易失性存储器中被镜像时,使得所述数据部分从所述易失性存储器中被移除。
3.如权利要求1所述的方法,其中所述数据库包括已经被指定为有资格在易失性存储器内用于镜像的第二数据部分,其中所述数据部分是第一数据部分,所述镜像状态是第一镜像状态,并且所述资格数据是第一资格数据,并且所述方法还包括:
存储与所述第二数据部分对应的第二资格数据,其中所述第二资格数据反映使所述第二数据部分在所述易失性存储器中被镜像的估计益处;
其中第二资格数据由所述数据库服务器基于所述一个或多个因素来确定;
基于第二资格数据,自动地改变第二数据部分的第二镜像状态;
其中自动地改变第二数据部分的第二镜像状态包括以下中的一个:
当所述数据部分当前未在所述易失性存储器中被镜像时,使得所述数据部分在所述易失性存储器内被镜像,或者
当所述数据部分当前在所述易失性存储器中被镜像时,使得所述数据部分从所述易失性存储器中被移除。
4.如权利要求3所述的方法,还包括:
由所述数据库服务器周期性地或基于以下中的一个或多个来执行对与第一数据部分和第二数据部分相关的所述一个或多个因素的评估:
a)达到用户指定的时间,
b)达到由所述数据库服务器基于系统统计值确定的时间,
或
c)一个或多个用户指定的触发器,其中所述一个或多个用户指定的触发器包括以下中的一个或多个:易失性存储器中的空间的可用性或者数据库服务器的统计值跨越一个或多个阈值;
基于所述一个或多个评估,生成分别与第一数据部分和第二数据部分对应的新的第一资格数据和新的第二资格数据;
基于所述新的第一资格数据和新的第二资格数据,自动地改变第一数据部分的第一镜像状态或第二数据部分的第二镜像状态;
其中自动地改变第一数据部分的第一镜像状态或第二数据部分的第二镜像状态包括以下中的一个:
当第一数据部分或第二数据部分当前未在所述易失性存储器中被镜像时,使得第一数据部分或第二数据部分在所述易失性存储器内被镜像,或者
当第一数据部分或第二数据部分当前在所述易失性存储器中被镜像时,使得所述数据部分从所述易失性存储器中被移除。
5.如权利要求1所述的方法,其中所述一个或多个因素包括以下中的至少一个:
与所述数据部分相关联的访问统计值,
所述数据部分的数据类型,
与所述数据部分相关联的操作统计值,或者
与所述数据部分相关联的数据统计值。
6.如权利要求1所述的方法,
其中所述一个或多个因素包括与所述数据部分相关联的访问统计值;
其中与所述数据部分相关联的所述访问统计值包括所述数据部分的热图统计值;
其中所述评估包括评估所述数据部分的热图统计值;以及
所述方法还包括:
如果所述热图统计值指示对所述数据部分的频繁读取访问,则修改所述资格数据以增加所述数据部分将被加载到所述易失性存储器中的可能性;
如果所述热图统计值指示对所述数据部分的不频繁读取访问,则修改所述资格数据以减少所述数据部分将被加载到所述易失性存储器中的可能性。
7.如权利要求1所述的方法,其中:
所述一个或多个因素包括与所述数据部分相关联的访问统计值;
与所述数据部分相关联的所述访问统计值包括所述数据部分的热图统计值;
所述评估包括评估所述数据部分的热图统计值;以及
所述方法还包括:如果所述热图统计值指示对数据部分的频繁写入访问,则修改所述资格数据以减少所述数据部分将被加载到所述易失性存储器中的可能性。
8.如权利要求1所述的方法,其中:
所述一个或多个因素包括所述数据部分的数据类型,以及
所述方法还包括:如果所述数据类型是大对象类型,则修改所述资格数据以减少所述数据部分将被加载到所述易失性存储器中的可能性。
9.如权利要求1所述的方法,其中:
自动地改变所述数据部分的镜像状态包括:当所述数据部分当前在所述易失性存储器中被镜像时,使得所述数据部分从所述易失性存储器中被移除;以及
其中使得所述数据部分从所述易失性存储器中被移除是响应于导致镜像数据部分的一个或多个拷贝将从所述易失性存储器被移除的清除事件而执行的。
10.如权利要求9所述的方法,还包括:
执行所述资格数据和阈值之间的比较,以及
基于所述比较,自动地确定来自所述数据部分的数据将从所述易失性存储器中被移除。
11.如权利要求1所述的方法,其中:
所述数据部分是第一数据部分;
所述资格数据是第一资格数据;
所述数据库包括与第一数据部分分离的第二数据部分,该第二数据部分已经被指定为有资格在所述易失性存储器内用于镜像;以及
所述方法还包括:
存储与第二数据部分对应的第二资格数据,其中第二资格数据反映使所述第二数据部分在所述易失性存储器中被镜像的估计益处;
基于第二资格数据,自动地确定来自第二数据部分的数据应该被加载到所述易失性存储器中;
当来自第一数据部分的数据在所述易失性存储器中被镜像并且来自第二数据部分的数据未在所述易失性存储器中被镜像时,所述数据库服务器执行以下步骤:
执行第二资格数据和第一资格数据之间的比较;以及
基于所述比较,所述数据库服务器确定来自第一数据部分的数据将从所述易失性存储器中被移除;
响应于导致镜像数据部分的拷贝将从所述易失性存储器被移除的清除事件,从所述易失性存储器中移除来自第一数据部分的数据。
12.如权利要求1所述的方法,其中:
自动地改变所述数据部分的镜像状态包括:当所述数据部分当前未在所述易失性存储器中被镜像时,使得所述数据部分在所述易失性存储器内被镜像;以及
其中使得所述数据部分在所述易失性存储器内被镜像是响应于导致数据部分将在所述易失性存储器内被镜像的加载事件而执行的。
13.如权利要求12所述的方法,其中将来自所述数据部分的数据加载到所述易失性存储器中包括使用来自所述数据部分的数据来构建存储器中压缩单元。
14.如权利要求13所述的方法,其中在所述持久性存储装置中,以行优先的格式来组织来自所述数据部分的数据,并且在所述存储器中压缩单元内,以列优先的格式来组织来自所述数据部分的数据。
15.如权利要求1所述的方法,其中:
所述评估包括针对所述数据部分的一定数据部分对以下中的至少一个进行评估:
所述一定数据部分的访问统计值,
所述一定数据部分的数据类型,或
针对与所述一定数据部分相似的一个或多个压缩数据部分的性能统计值;以及
所述方法还包括:
基于所述评估,修改所述一定数据部分的压缩级别;
以修改后的压缩级别来压缩所述一定数据部分中的数据;以及
将压缩后的数据加载到所述易失性存储器中。
16.如权利要求15所述的方法,其中针对与所述一定数据部分相似的所述一个或多个压缩数据部分的所述性能统计值被评估为指示不同的压缩级别消耗所述数据库服务器的更少资源;以及修改所述一定数据部分的压缩级别以接近所述不同的压缩级别。
17.存储指令的一个或多个非暂态存储介质,所述指令在由一个或多个硬件处理器执行时,使得执行如权利要求1-16中任一项所述的方法。
18.一种包括用于执行如权利要求1-16中任一项所述的方法的部件的装置。
19.一种设备,包括:
处理器;以及
存储器,耦合到所述处理器并且所述存储器包括存储在其上的指令,所述指令在由所述处理器执行时,使得所述处理器执行如权利要求1-16中任一项所述的方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/841,561 | 2015-08-31 | ||
US14/841,561 US9990308B2 (en) | 2015-08-31 | 2015-08-31 | Selective data compression for in-memory databases |
PCT/US2016/040448 WO2017039817A1 (en) | 2015-08-31 | 2016-06-30 | Selective data compression for in-memory databases |
CN201680057698.8A CN108140040B (zh) | 2015-08-31 | 2016-06-30 | 存储器中数据库的选择性数据压缩 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680057698.8A Division CN108140040B (zh) | 2015-08-31 | 2016-06-30 | 存储器中数据库的选择性数据压缩 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116701398A true CN116701398A (zh) | 2023-09-05 |
Family
ID=56497861
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310712612.2A Pending CN116701398A (zh) | 2015-08-31 | 2016-06-30 | 存储器中数据库的选择性数据压缩 |
CN201680057698.8A Active CN108140040B (zh) | 2015-08-31 | 2016-06-30 | 存储器中数据库的选择性数据压缩 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680057698.8A Active CN108140040B (zh) | 2015-08-31 | 2016-06-30 | 存储器中数据库的选择性数据压缩 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9990308B2 (zh) |
EP (1) | EP3345101B1 (zh) |
CN (2) | CN116701398A (zh) |
WO (1) | WO2017039817A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014052977A1 (en) | 2012-09-28 | 2014-04-03 | Oracle International Corporation | Adaptive query optimization |
US9990308B2 (en) | 2015-08-31 | 2018-06-05 | Oracle International Corporation | Selective data compression for in-memory databases |
KR20170045928A (ko) * | 2015-10-20 | 2017-04-28 | 삼성에스디에스 주식회사 | 인메모리 데이터베이스를 이용한 데이터 관리 방법 및 그 장치 |
US10303655B1 (en) * | 2015-12-21 | 2019-05-28 | EMC IP Holding Company LLC | Storage array compression based on the structure of the data being compressed |
US10248692B2 (en) | 2016-06-15 | 2019-04-02 | International Business Machines Corporation | Cardinality estimation of a join predicate |
US10169025B2 (en) * | 2016-11-28 | 2019-01-01 | Arris Enterprises Llc | Dynamic management of software load at customer premise equipment device |
US10642602B2 (en) * | 2017-12-12 | 2020-05-05 | Nxp Usa, Inc. | NVM architecture with OTA support |
CN108804042B (zh) * | 2018-06-16 | 2021-06-15 | 浙江力石科技股份有限公司 | 一种基于缓存内移出的数据组进行动态处理的方法及系统 |
CN110858195A (zh) * | 2018-08-17 | 2020-03-03 | 空气磁体公司 | 时间系列度量的高效的存储和查询 |
US10915517B2 (en) * | 2018-11-26 | 2021-02-09 | Bank Of America Corporation | Database tool |
CN109802684B (zh) * | 2018-12-26 | 2022-03-25 | 华为技术有限公司 | 进行数据压缩的方法和装置 |
US11630738B2 (en) | 2019-04-24 | 2023-04-18 | International Business Machines Corporation | Automatic objective-based compression level change for individual clusters |
US11514027B2 (en) | 2019-06-07 | 2022-11-29 | Sap Se | Paged hybrid LOBs |
US11514055B2 (en) | 2019-09-13 | 2022-11-29 | Oracle International Corporation | Querying on hybrid formats and storages |
US11074142B1 (en) * | 2021-01-15 | 2021-07-27 | Coupang Corp. | Systems and methods for automatically resolving system failure through force supplying cached API data |
US11379369B1 (en) * | 2021-01-15 | 2022-07-05 | Coupang Corp. | Systems and methods for dynamic in-memory caching of mappings into partitions |
US11960452B2 (en) * | 2021-06-23 | 2024-04-16 | Nutanix, Inc. | Independent encoding and transformation of related data replicas and localized background data management in a distributed file system |
CN115276665B (zh) * | 2022-09-28 | 2022-12-20 | 江苏森信达生物科技有限公司 | 一种原料药的智能管理方法和系统 |
Family Cites Families (156)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3513246A (en) | 1967-04-24 | 1970-05-19 | Singer General Precision | Analog computer |
GB1332631A (en) | 1971-02-26 | 1973-10-03 | Ibm | Data processing system |
SE8307228D0 (sv) | 1983-12-30 | 1983-12-30 | Grundstenen 16808 Ab | Datakomprimering |
USRE34052E (en) | 1984-05-31 | 1992-09-01 | International Business Machines Corporation | Data processing system with CPU register to register data transfers overlapped with data transfer to and from main storage |
US5255356A (en) | 1989-05-31 | 1993-10-19 | Microsoft Corporation | Method for hiding and showing spreadsheet cells |
US5604899A (en) | 1990-05-21 | 1997-02-18 | Financial Systems Technology Pty. Ltd. | Data relationships processor with unlimited expansion capability |
US5263145A (en) | 1990-05-24 | 1993-11-16 | International Business Machines Corporation | Method and means for accessing DASD arrays with tuned data transfer rate and concurrency |
US5544347A (en) | 1990-09-24 | 1996-08-06 | Emc Corporation | Data storage system controlled remote data mirroring with respectively maintained data indices |
US5506979A (en) | 1991-04-02 | 1996-04-09 | International Business Machines Corporation | Method and means for execution of commands accessing variable length records stored on fixed block formatted DASDS of an N+2 DASD synchronous array |
US5423010A (en) | 1992-01-24 | 1995-06-06 | C-Cube Microsystems | Structure and method for packing and unpacking a stream of N-bit data to and from a stream of N-bit data words |
WO1993019434A1 (en) | 1992-03-17 | 1993-09-30 | Zoran Corporation | Image compression coder having improved bit rate control and block allocation |
US5404510A (en) | 1992-05-21 | 1995-04-04 | Oracle Corporation | Database index design based upon request importance and the reuse and modification of similar existing indexes |
US5581778A (en) | 1992-08-05 | 1996-12-03 | David Sarnoff Researach Center | Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock |
US5794229A (en) | 1993-04-16 | 1998-08-11 | Sybase, Inc. | Database system with methodology for storing a database table by vertically partitioning all columns of the table |
US5581705A (en) | 1993-12-13 | 1996-12-03 | Cray Research, Inc. | Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system |
US5546575A (en) | 1994-05-23 | 1996-08-13 | Basil E. Potter & Associates, Inc. | Encoding method for compressing a tabular database by selecting effective compression routines for each field and structure of partitions of equal sized records |
US5680573A (en) | 1994-07-12 | 1997-10-21 | Sybase, Inc. | Method of buffering data objects in a database |
US7190284B1 (en) | 1994-11-16 | 2007-03-13 | Dye Thomas A | Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent |
JP3518034B2 (ja) | 1995-03-30 | 2004-04-12 | 三菱電機株式会社 | ソート方法並びにソート処理装置並びにデータ処理装置 |
US5710909A (en) | 1996-01-23 | 1998-01-20 | International Business Machines Corporation | Data compression utilization method and apparatus for computer main store |
US5778430A (en) | 1996-04-19 | 1998-07-07 | Eccs, Inc. | Method and apparatus for computer disk cache management |
US5995080A (en) | 1996-06-21 | 1999-11-30 | Digital Equipment Corporation | Method and apparatus for interleaving and de-interleaving YUV pixel data |
US5870759A (en) | 1996-10-09 | 1999-02-09 | Oracle Corporation | System for synchronizing data between computers using a before-image of data |
US7225249B1 (en) | 1997-09-26 | 2007-05-29 | Mci, Llc | Integrated systems for providing communications network management services and interactive generating invoice documents |
US9197599B1 (en) | 1997-09-26 | 2015-11-24 | Verizon Patent And Licensing Inc. | Integrated business system for web based telecommunications management |
US6360213B1 (en) | 1997-10-14 | 2002-03-19 | International Business Machines Corporation | System and method for continuously adaptive indexes |
US6047081A (en) | 1997-10-24 | 2000-04-04 | Imation Corp. | Image processing software system having configurable communication pipelines |
US20010049780A1 (en) | 1998-03-27 | 2001-12-06 | Shreekant Thakkar | Method and apparatus for performing integer operations in response to a result of a floating point operation |
US6216125B1 (en) | 1998-07-02 | 2001-04-10 | At&T Corp. | Coarse indexes for a data warehouse |
US6009432A (en) | 1998-07-08 | 1999-12-28 | Required Technologies, Inc. | Value-instance-connectivity computer-implemented database |
EP1046100A1 (en) | 1998-08-06 | 2000-10-25 | Trimedia Technologies, Inc. | Data processor and method of processing data |
US6959300B1 (en) | 1998-12-10 | 2005-10-25 | At&T Corp. | Data compression method and apparatus |
US6624761B2 (en) | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
US7129860B2 (en) | 1999-01-29 | 2006-10-31 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
JP2000261674A (ja) | 1999-03-09 | 2000-09-22 | Fujitsu Ltd | 画像伸長装置 |
US6826522B1 (en) | 1999-06-21 | 2004-11-30 | Pts Corporation | Methods and apparatus for improved efficiency in pipeline simulation and emulation |
US8032409B1 (en) | 1999-11-22 | 2011-10-04 | Accenture Global Services Limited | Enhanced visibility during installation management in a network-based supply chain environment |
US6721727B2 (en) | 1999-12-02 | 2004-04-13 | International Business Machines Corporation | XML documents stored as column data |
US6671797B1 (en) | 2000-02-18 | 2003-12-30 | Texas Instruments Incorporated | Microprocessor with expand instruction for forming a mask from one bit |
CA2326805A1 (en) | 2000-11-24 | 2002-05-24 | Ibm Canada Limited-Ibm Canada Limitee | Method and apparatus for deleting data in a database |
US6917987B2 (en) | 2001-03-26 | 2005-07-12 | Intel Corporation | Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications |
US6745174B2 (en) | 2001-03-29 | 2004-06-01 | Hewlett-Packard Development Company, L.P. | Method of executing before-triggers in an active database |
US20020188830A1 (en) | 2001-06-01 | 2002-12-12 | Brian Boles | Bit replacement and extraction instructions |
US7092977B2 (en) | 2001-08-31 | 2006-08-15 | Arkivio, Inc. | Techniques for storing data based upon storage policies |
US6615206B1 (en) | 2001-09-28 | 2003-09-02 | Oracle International Corporation | Techniques for eliminating database table joins based on a join index |
US7076108B2 (en) | 2001-12-11 | 2006-07-11 | Gen Dow Huang | Apparatus and method for image/video compression using discrete wavelet transform |
US7149769B2 (en) | 2002-03-26 | 2006-12-12 | Hewlett-Packard Development Company, L.P. | System and method for multi-destination merge in a storage area network |
US7103608B1 (en) | 2002-05-10 | 2006-09-05 | Oracle International Corporation | Method and mechanism for storing and accessing data |
US7249118B2 (en) | 2002-05-17 | 2007-07-24 | Aleri, Inc. | Database system and methods |
US20050027729A1 (en) | 2002-05-22 | 2005-02-03 | Allan Kuchinsky | System and methods for visualizing and manipulating multiple data values with graphical views of biological relationships |
KR100884990B1 (ko) | 2002-06-07 | 2009-02-20 | 노키아 코포레이션 | 통신 시스템에서 이동 장치에 관한 정보 요청을 지원하는방법 |
US6842848B2 (en) | 2002-10-11 | 2005-01-11 | Sandbridge Technologies, Inc. | Method and apparatus for token triggered multithreading |
US6829602B2 (en) | 2002-12-12 | 2004-12-07 | Microsoft Corporation | System and method for using a compressed trie to estimate like predicates |
CA2510108A1 (en) | 2002-12-16 | 2004-07-15 | Questerra Llc | Method, system and program for network design, analysis, and optimization |
US7079056B2 (en) | 2003-01-15 | 2006-07-18 | Delphi Technologies, Inc. | Method of encoding and storing in a machine control computer a compressed data lookup table |
US7730292B2 (en) | 2003-03-31 | 2010-06-01 | Hewlett-Packard Development Company, L.P. | Parallel subword instructions for directing results to selected subword locations of data processor result register |
CN100547583C (zh) | 2003-08-14 | 2009-10-07 | 甲骨文国际公司 | 数据库的自动和动态提供的方法 |
US7555497B2 (en) | 2003-08-21 | 2009-06-30 | Microsoft Corporation | Systems and methods for separating units of information manageable by a hardware/software interface system from their physical organization |
US7469266B2 (en) | 2003-09-29 | 2008-12-23 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using register block data format routines |
US7383246B2 (en) | 2003-10-31 | 2008-06-03 | International Business Machines Corporation | System, method, and computer program product for progressive query processing |
US7047252B2 (en) | 2003-12-02 | 2006-05-16 | Oracle International Corporation | Complex computation across heterogenous computer systems |
US7693325B2 (en) | 2004-01-14 | 2010-04-06 | Hexagon Metrology, Inc. | Transprojection of geometry data |
US7349925B2 (en) | 2004-01-22 | 2008-03-25 | International Business Machines Corporation | Shared scans utilizing query monitor during query execution to improve buffer cache utilization across multi-stream query environments |
US20050210054A1 (en) | 2004-03-22 | 2005-09-22 | Michael Harris | Information management system |
US7496586B1 (en) | 2004-05-26 | 2009-02-24 | Sun Microsystems, Inc. | Method and apparatus for compressing data in a file system |
US7353219B2 (en) | 2004-05-28 | 2008-04-01 | International Business Machines Corporation | Determining validity ranges of query plans based on suboptimality |
US7565346B2 (en) | 2004-05-31 | 2009-07-21 | International Business Machines Corporation | System and method for sequence-based subspace pattern clustering |
US7707194B2 (en) | 2004-06-08 | 2010-04-27 | Sap Ag | Interface to lock a database row through a logical locking interface |
US8203972B2 (en) | 2004-06-30 | 2012-06-19 | Sap Ag | Method and system for compressing a tree |
US8046354B2 (en) | 2004-09-30 | 2011-10-25 | International Business Machines Corporation | Method and apparatus for re-evaluating execution strategy for a database query |
US9886492B2 (en) | 2004-12-22 | 2018-02-06 | Teradata Us, Inc. | Self-adjusting database-query optimizer |
US7499917B2 (en) | 2005-01-28 | 2009-03-03 | International Business Machines Corporation | Processing cross-table non-Boolean term conditions in database queries |
WO2006096939A1 (en) | 2005-03-18 | 2006-09-21 | Kwok Kay Wong | Remote access of heterogeneous data |
US7814104B2 (en) | 2005-05-04 | 2010-10-12 | Oracle International Corporation | Techniques for partition pruning |
US7725595B1 (en) | 2005-05-24 | 2010-05-25 | The United States Of America As Represented By The Secretary Of The Navy | Embedded communications system and method |
US7496589B1 (en) | 2005-07-09 | 2009-02-24 | Google Inc. | Highly compressed randomly accessed storage of large tables with arbitrary columns |
US7861060B1 (en) | 2005-12-15 | 2010-12-28 | Nvidia Corporation | Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior |
US7558290B1 (en) | 2005-12-16 | 2009-07-07 | Narus, Inc. | Method and apparatus of data compression for computer networks |
US20070143248A1 (en) | 2005-12-19 | 2007-06-21 | Yahoo! Inc. | Method using query processing servers for query processing of column chunks in a distributed column chunk data store |
US7430553B2 (en) | 2005-12-30 | 2008-09-30 | Microsoft Corporation | Managing states with delta pager |
US7574560B2 (en) | 2006-01-03 | 2009-08-11 | Emc Corporation | Methods, systems, and computer program products for dynamic mapping of logical units in a redundant array of inexpensive disks (RAID) environment |
US8049760B2 (en) | 2006-02-06 | 2011-11-01 | Via Technologies, Inc. | System and method for vector computations in arithmetic logic units (ALUs) |
JP4813924B2 (ja) | 2006-02-28 | 2011-11-09 | 株式会社日立製作所 | データベース管理システム、ストレージ装置、ディザスタリカバリシステム及びデータベースのバックアップ方法 |
US7877373B2 (en) | 2006-06-30 | 2011-01-25 | Oracle International Corporation | Executing alternative plans for a SQL statement |
US7783862B2 (en) | 2006-08-07 | 2010-08-24 | International Characters, Inc. | Method and apparatus for an inductive doubling architecture |
US7961959B2 (en) | 2006-08-24 | 2011-06-14 | Dell Products L.P. | Methods and apparatus for reducing storage size |
US20080059492A1 (en) | 2006-08-31 | 2008-03-06 | Tarin Stephen A | Systems, methods, and storage structures for cached databases |
AU2007290044A1 (en) | 2006-09-01 | 2008-03-06 | Pacbyte Software Pty Limited | Method and system for transmitting a data file over a data network |
WO2008034213A1 (en) | 2006-09-18 | 2008-03-27 | Infobright Inc. | A method and system for data compression in a relational database |
US7552130B2 (en) | 2006-10-17 | 2009-06-23 | International Business Machines Corporation | Optimal data storage and access for clustered data in a relational database |
US7634512B2 (en) | 2006-10-20 | 2009-12-15 | Oracle International Corporation | Migrating temporary data of a session |
US8533216B2 (en) | 2006-10-30 | 2013-09-10 | Teradata Us, Inc. | Database system workload management method and system |
US8386444B2 (en) | 2006-12-29 | 2013-02-26 | Teradata Us, Inc. | Techniques for selective compression of database information |
US7664866B2 (en) | 2007-04-10 | 2010-02-16 | Apertio Limited | Sub-tree access control in network architectures |
US8782075B2 (en) | 2007-05-08 | 2014-07-15 | Paraccel Llc | Query handling in databases with replicated data |
US8671076B2 (en) | 2007-05-08 | 2014-03-11 | Bmc Software, Inc. | Database recovery using logs applied to consistent copies |
US7769729B2 (en) | 2007-05-21 | 2010-08-03 | Sap Ag | Block compression of tables with repeated values |
US8032499B2 (en) | 2007-05-21 | 2011-10-04 | Sap Ag | Compression of tables based on occurrence of values |
US20090006399A1 (en) | 2007-06-29 | 2009-01-01 | International Business Machines Corporation | Compression method for relational tables based on combined column and row coding |
US20090037700A1 (en) | 2007-07-30 | 2009-02-05 | Clear Falls Pty Ltd | Method and system for reactively assigning computational threads of control between processors |
US20090070786A1 (en) | 2007-09-11 | 2009-03-12 | Bea Systems, Inc. | Xml-based event processing networks for event server |
HUE042697T2 (hu) | 2007-09-24 | 2019-07-29 | Hasso Plattner Inst Fuer Digital Engineering Ggmbh | ETL kisebb nulla redundancia rendszer és eljárás OLTP adatok jelentésére |
US8392382B2 (en) | 2007-10-19 | 2013-03-05 | Oracle International Corporation | On-line transaction processing (OLTP) compression and re-compression of database data |
US7991794B2 (en) | 2007-12-18 | 2011-08-02 | Oracle International Corporation | Pipelining operations involving DML and query |
US7769726B2 (en) | 2007-12-31 | 2010-08-03 | Sap, Ag | Method for verification of data and metadata in a data repository |
US8688621B2 (en) | 2008-05-20 | 2014-04-01 | NetCee Systems, Inc. | Systems and methods for information compression |
US7979399B2 (en) | 2008-06-10 | 2011-07-12 | International Business Machines Corporation | Database journaling in a multi-node environment |
US8108361B2 (en) | 2008-07-31 | 2012-01-31 | Microsoft Corporation | Efficient column based data encoding for large-scale data storage |
US8099440B2 (en) | 2008-08-15 | 2012-01-17 | International Business Machines Corporation | Method for laying out fields in a database in a hybrid of row-wise and column-wise ordering |
US20100088309A1 (en) | 2008-10-05 | 2010-04-08 | Microsoft Corporation | Efficient large-scale joining for querying of column based data encoded structures |
US9507811B2 (en) | 2008-12-22 | 2016-11-29 | Oracle International Corporation | Compressed data page with uncompressed data fields |
US10152504B2 (en) | 2009-03-11 | 2018-12-11 | Actian Netherlands B.V. | Column-store database architecture utilizing positional delta tree update system and methods |
US8725707B2 (en) | 2009-03-26 | 2014-05-13 | Hewlett-Packard Development Company, L.P. | Data continuous SQL process |
US8401996B2 (en) | 2009-03-30 | 2013-03-19 | Commvault Systems, Inc. | Storing a variable number of instances of data objects |
US8434075B1 (en) | 2009-04-15 | 2013-04-30 | Teradata Us, Inc. | Branching optimization in a multi-database system |
US8645337B2 (en) | 2009-04-30 | 2014-02-04 | Oracle International Corporation | Storing compression units in relational tables |
US8356060B2 (en) | 2009-04-30 | 2013-01-15 | Oracle International Corporation | Compression analyzer |
US8935223B2 (en) | 2009-04-30 | 2015-01-13 | Oracle International Corporation | Structure of hierarchical compressed data structure for tabular data |
US8583692B2 (en) | 2009-04-30 | 2013-11-12 | Oracle International Corporation | DDL and DML support for hybrid columnar compressed tables |
US9667269B2 (en) | 2009-04-30 | 2017-05-30 | Oracle International Corporation | Technique for compressing XML indexes |
US8285709B2 (en) | 2009-05-12 | 2012-10-09 | Teradata Us, Inc. | High-concurrency query operator and method |
US20100306188A1 (en) | 2009-06-01 | 2010-12-02 | Microsoft Corporation | Persistent query plans |
US8296517B2 (en) | 2009-08-19 | 2012-10-23 | Oracle International Corporation | Database operation-aware striping technique |
US8832142B2 (en) | 2010-08-30 | 2014-09-09 | Oracle International Corporation | Query and exadata support for hybrid columnar compressed data |
US8868510B2 (en) | 2009-12-03 | 2014-10-21 | Sybase, Inc. | Managing data storage as an in-memory database in a database management system |
US8433684B2 (en) | 2010-03-30 | 2013-04-30 | Sybase, Inc. | Managing data backup of an in-memory database in a database management system |
US8516268B2 (en) | 2010-08-23 | 2013-08-20 | Raytheon Company | Secure field-programmable gate array (FPGA) architecture |
LU91726B1 (en) | 2010-09-10 | 2012-03-12 | Univ Saarland | A method of storing and accessing data in a database system |
US8260803B2 (en) | 2010-09-23 | 2012-09-04 | Hewlett-Packard Development Company, L.P. | System and method for data stream processing |
US8938644B2 (en) | 2010-12-03 | 2015-01-20 | Teradata Us, Inc. | Query execution plan revision for error recovery |
US8996463B2 (en) | 2012-07-26 | 2015-03-31 | Mongodb, Inc. | Aggregation framework system architecture and method |
US8880508B2 (en) | 2010-12-30 | 2014-11-04 | Sap Se | Processing database queries using format conversion |
US20120303633A1 (en) | 2011-05-26 | 2012-11-29 | International Business Machines Corporation | Systems and methods for querying column oriented databases |
US20120323971A1 (en) | 2011-06-14 | 2012-12-20 | Sybase, Inc. | Optimizing data storage and access of an in-memory database |
US9792117B2 (en) | 2011-12-08 | 2017-10-17 | Oracle International Corporation | Loading values from a value vector into subregisters of a single instruction multiple data register |
CN104040542B (zh) | 2011-12-08 | 2017-10-10 | 甲骨文国际公司 | 用于在易失性存储器内保持关系型数据的列向量的技术 |
US9697174B2 (en) | 2011-12-08 | 2017-07-04 | Oracle International Corporation | Efficient hardware instructions for processing bit vectors for single instruction multiple data processors |
US9342314B2 (en) | 2011-12-08 | 2016-05-17 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors |
US8918436B2 (en) | 2011-12-22 | 2014-12-23 | Sap Ag | Hybrid database table stored as both row and column store |
WO2013095653A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register |
WO2013095662A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing vector packed unary encoding using masks |
US20130254140A1 (en) * | 2012-03-20 | 2013-09-26 | General Instrument Corporation | Method and system for assessing and updating user-preference information |
US8645356B2 (en) | 2012-03-28 | 2014-02-04 | International Business Machines Corporation | Adaptive query execution plan enhancement |
US9703500B2 (en) | 2012-04-25 | 2017-07-11 | International Business Machines Corporation | Reducing power consumption by migration of data within a tiered storage system |
US20140040218A1 (en) | 2012-07-31 | 2014-02-06 | Hideaki Kimura | Methods and systems for an intent lock engine |
US8856484B2 (en) | 2012-08-14 | 2014-10-07 | Infinidat Ltd. | Mass storage system and methods of controlling resources thereof |
US20140075493A1 (en) | 2012-09-12 | 2014-03-13 | Avaya, Inc. | System and method for location-based protection of mobile data |
US9063974B2 (en) | 2012-10-02 | 2015-06-23 | Oracle International Corporation | Hardware for table scan acceleration |
US10296462B2 (en) | 2013-03-15 | 2019-05-21 | Oracle International Corporation | Method to accelerate queries using dynamically generated alternate data formats in flash cache |
US9323799B2 (en) | 2013-09-21 | 2016-04-26 | Oracle International Corporation | Mechanism to run OLTP workload on in-memory database under memory pressure |
US9292564B2 (en) | 2013-09-21 | 2016-03-22 | Oracle International Corporation | Mirroring, in memory, data from disk to improve query performance |
US9430390B2 (en) | 2013-09-21 | 2016-08-30 | Oracle International Corporation | Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications |
US9128972B2 (en) | 2013-09-21 | 2015-09-08 | Oracle International Corporation | Multi-version concurrency control on in-memory snapshot store of oracle in-memory database |
US9703491B2 (en) * | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10572442B2 (en) * | 2014-11-26 | 2020-02-25 | Microsoft Technology Licensing, Llc | Systems and methods for providing distributed tree traversal using hardware-based processing |
US9990308B2 (en) | 2015-08-31 | 2018-06-05 | Oracle International Corporation | Selective data compression for in-memory databases |
-
2015
- 2015-08-31 US US14/841,561 patent/US9990308B2/en active Active
-
2016
- 2016-06-30 WO PCT/US2016/040448 patent/WO2017039817A1/en active Application Filing
- 2016-06-30 CN CN202310712612.2A patent/CN116701398A/zh active Pending
- 2016-06-30 CN CN201680057698.8A patent/CN108140040B/zh active Active
- 2016-06-30 EP EP16741444.0A patent/EP3345101B1/en active Active
-
2018
- 2018-05-14 US US15/979,130 patent/US10331572B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN108140040A (zh) | 2018-06-08 |
US10331572B2 (en) | 2019-06-25 |
US9990308B2 (en) | 2018-06-05 |
WO2017039817A1 (en) | 2017-03-09 |
EP3345101B1 (en) | 2023-07-19 |
CN108140040B (zh) | 2023-07-04 |
EP3345101A1 (en) | 2018-07-11 |
US20180260338A1 (en) | 2018-09-13 |
US20170060772A1 (en) | 2017-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108140040B (zh) | 存储器中数据库的选择性数据压缩 | |
US10120895B2 (en) | Mirroring, in memory, data from disk to improve query performance | |
US10268746B2 (en) | Mechanism to run OLTP workload on in-memory database under memory pressure | |
CN107851123B (zh) | 在存储器中虚拟列单元内具体化表达式以加速分析查询 | |
US9606921B2 (en) | Granular creation and refresh of columnar data | |
EP3047400B1 (en) | Multi-version concurrency control on in-memory snapshot store of oracle in-memory database | |
US10366083B2 (en) | Materializing internal computations in-memory to improve query performance | |
US9684682B2 (en) | Sharding of in-memory objects across NUMA nodes | |
CN105144160B (zh) | 利用闪存高速缓存中动态生成的替代数据格式加速查询的方法 | |
EP3377991B1 (en) | In-memory key-value store for a multi-model database | |
US10007691B2 (en) | Prioritizing repopulation of in-memory compression units | |
US10838933B2 (en) | Periodic performance optimization through heatmap based management of an in-memory area | |
US20160092507A1 (en) | Optimizing a query with extrema function using in-memory data summaries on the storage server | |
US10339069B2 (en) | Caching large objects in a computer system with mixed data warehousing and online transaction processing workload | |
Li et al. | Check for A Comparative Study of Row and Column Storage for Time Series Data Lu Li, Feifan Pu, Yi Li, and Jianqiu Xu~) Nanjing University of Aeronautics and Astronautics, Nanjing 210016, China |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |