赞
踩
HTAP混合负载是工业界的一个热点,一般来说,B+树用于OLTP业务,列存用于OLAP业务。然而,真实的业务场景中很难区分workload到底是OLTP还是OLAP,主流的OLTP商业数据库都会有比较强的OLAP分析能力。这篇论文研究如何在同一个数据库中混合使用B+树和列存这两种不同类型的索引,它首先通过一个benchmark对这两种索引在各种读写场景下的性能做了一个量化对比,接着讲解SQL Server中使用的Database Engine Tuning Advisor来动态地选择和推荐索引。论文最后的测试表明,Hybrid方案的性能往往是优于单一的B+树或者列存的。
Commercial DBMSs, such as Microsoft SQL Server, cater to diverse workloads including transaction processing, decision support, and operational analytics.
商业DBMSs,如Microsoft SQL Server,可以满足不同的工作负载,包括事务处理,决策支持和操作分析。
They also support variety in physical design structures such as B+ tree and columnstore.
它们还支持多种物理设计结构,如B+树和列存储。
The benefits of B+ tree for OLTP workloads and columnstore for decision support workloads are well-understood.
很容易理解B+树用于OLTP workloads 和列存储用于决策支持workloads的优势。
However, the importance of hybrid physical designs, consisting of both columnstore and B+ tree indexes on the same database, is not well-studied — a focus of this paper.
然而,混合物理设计的重要性,在一个数据库中包含列存储和B+树索引还没有得到很好的研究,这是本文的重点。
We first quantify the trade-offs using carefully-crafted micro-benchmarks. This micro-benchmarking indicates that hybrid physical designs can result in orders of magnitude better performance depending on the workload.
我们首先使用精心设计的micro-benchmarks来量化trade-offs。该micro-benchmarks表明,根据workload的不同,混合物理设计可以产生数量级的更好性能。
For complex real-world applications, choosing an appropriate combination of columnstore and B+ tree indexes for a database workload is challenging.
对于复杂的实际应用程序,为数据库workload选择合适合适的列存储和B+树索引组合是一个挑战。
We extend the Database Engine Tuning Advisor for Microsoft SQL Server to recommend a suitable combination of B+ tree and columnstore indexes for a given workload.
我们扩展了Microsoft SQL Server的Database Engine Tuning Advisor,为给定的workload推荐B+树和列存储索引的适当组合。
Through extensive experiments using industry-standard benchmarks and several real-world customer workloads, we quantify how a physical design tool capable of recommending hybrid physical designs can result in orders of magnitude better execution costs compared to approaches that rely either on columnstore-only or B+ tree-only designs.
通过大量的工业标准基准测试和一些真实的customer workload,我们量化了一个能够推荐混合物理设计的物理设计工具,与依赖于仅列存或仅B+树设计的方法相比,能够有着数量级优化的执行cost。
B+ tree indexes have been available in relational database systems (RDBMSs) for several decades and are widely used in practice. More recently, major commercial RDBMSs have also incorporated columnstore indexes. Microsoft SQL Server supports both B+ tree and columnstore indexes on the same table, either as a primary index that contains data of all columns in the table, or a redundant secondary index with a subset of columns.
B+树索引已经在关系数据库系统中使用了几十年,并在实践中得到了广泛的应用。最近,主要的商业RDBMSs也合并了列存储索引。Microsoft SQL Server支持在同一个表上的B+树和列存储索引,可以作为包含表中所有列的主索引,也可以作为包含列子集的冗余二级索引。
Commercial RDBMSs, such as SQL Server, support applications with workloads that vary from update-heavy OLTP, to read-heavy analytic and decision support workloads, to mixed workloads consisting of both OLTP and analytic queries on the same database for operational analytics scenarios.
商业RDBMSs,如SQL server,支持不同workload的应用程序,从侧重更新的OLTP,到侧重读取的分析和决策支持的workloads,再到混合workloads包括同一个数据库上的用于操作分析场景的OLTP和分析查询组成。
It is generally understood that columnstores are crucial to achieving high performance for analytic queries and that B+ tree indexes are key to supporting transactional workload efficiently. However, it is not well understood whether hybrid physical designs—both columnstore and B+ tree indexes on the same database and potentially the same table—are important for any of the above workloads.
一般认为,列存储对于实现分析查询的高性能是至关重要的,而B+树索引是有效支持事务性workload的关键。但是,混合物理设计,同一个数据库可能是同一个表上的列存储和B+树索引,对于上述任何工作负载是否重要,目前还不能很好的理解。
To answer this question, we first empirically quantify the read and update characteristics of columnstore and B+ tree indexes using carefully-crafted micro-benchmarks on a commercial RDBMS— Microsoft SQL Server. We analyze performance across a range of important parameters such as data size, selectivity, query working memory, number of rows updated, and concurrency (Section 3).
为了回答这个问题,我们首先通过在商业RDBMS Microsoft SQL Server 上精心设计了micro-benchmarks,实证地量化了列存储和B+树索引地读取和更新地特征。我们通过一系列重要参数分析性能,如数据大小、选择性、查询工作内存、更新行数和并发性(第三节)。
For read-only queries, we find that both columnstore and B+ tree indexes can significantly outperform one another based on workload characteristics. B+ trees outshine columnstores when query predicates are selective even when all data is memory resident; and the trade-off shifts further in favor of B+ trees when data is not memory resident. Likewise, B+ trees can be a better option for pro- viding data in sorted order when server memory is constrained.
对于只读查询,我们发现基于workload特征,列存储和B+树索引都可以显著优于彼此。当查询谓词是可选择的(selective ),即使所有数据都在内存里,B+树比列存储更出色。而当数据不在内存中时,则会trade-off进一步转向B+树。同样,当服务器内存受到限制时,B+树是按顺序提供数据的更好的选择。
On the other hand, columnstores are often an order of magnitude faster for large scans whether or not the data is memory resident. For updates, B+ trees are significantly cheaper. Secondary columnstores incur much lower update cost compared to primary columnstore indexes, but are still much slower than B+ trees. This empirical study indicates that for certain workloads, hybrid physical designs can provide significant performance gains.
另一方面,对于大型扫描,列存储通常要快一个数量级,无论数据是否在内存里。对于更新,B+树要明显cheaper。与主列存储索引相比,二级列存储的更新成本要低很多,但仍然比B+树慢很多。该实验研究表明,对于特定的workloads,混合物理设计可提供显著的性能提高。
Despite the promise of hybrid physical designs, choosing an appropriate mix of B+ tree and columnstores for complex real-world workloads can be daunting even for expert DBAs. Motivated by this need, we extend Database Engine Tuning Advisor (DTA), a physical design tuning tool for SQL Server, to analyze and recommend both B+ tree and columnstore indexes when suitable for a given workload. We discuss the challenges in the design and implementation of our extensions to DTA and SQL Server to consider this expanded space of physical designs (Section 4). This new functionality in DTA was released in January 2017 as part of Community Technology Preview (CTP) release of Microsoft SQL Server 2017 [37].
尽管混合物理设计很有前景,但是为复杂的实际workload选择B+树和列存储的适当组合是很复杂的,即使是专业DBA也是如此。处于这种需求,我们扩展了Database Engine Tuning Advisor (DTA),是一种用于SQL Server的物理设计调优工具,以分析和推荐B+树和列存储索引,以适应给定的工作负载。我们讨论了在设计和实验扩展DTA的挑战、SQL Server考虑扩大空间人身安全设计。这种新功能在DTA发布在2017年1月作为Microsoft SQL Server 2017 社区技术预览版本(CTP)的一部分。
Finally, we conduct extensive experiments using standard benchmarks, such as TPC-DS and CH, and several real-world customer workloads (Section 5). We derive two major conclusions from our experiments: (i) hybrid physical designs can result in more than an order of magnitude lower execution costs for many workloads when compared to alternatives using B+ tree-only or columnstore-only; (ii) the extensions to DTA to recommend hybrid physical designs helps exploit the best of both worlds: selecting the appropriate combination of B+ tree-only, columnstore-only, or hybrid configurations appropriate for a given workload.
最后,我们使用标准的基准测试,如TPC-DS和CH,还有一些真实的 customer workloads,进行了广泛的实验。我们从实验中得出了两个主要结论:(i)与使用B+树-only或列索引-only的替代方案相比,混合物理设计可以导致许多workload执行成本降低多个数量级;(ii)对DTA的扩展,推荐混合物理设计,有助于利用各种情况达到最佳:选择B+树-only,列索引-only或混合配置的适当组合。
Kester et al. present a similar empirical study considering columnstore and secondary B+ tree indexes in a main-memory-optimized prototype system supporting shared scans, with the focus on concurrency. Our study considers a richer hybrid design space supported in a commercial-strength DBMS, with the focus on variety of workloads and an automated tool to recommend such hybrid designs.
Kester 等人提出一个类似的实证研究,考虑了支持共享扫描的主内存优化原型系统中的列存储和二级B+树索引,它重点关注了并发性。我们的研究考虑了在商业级DBMS中支持的更丰富的混合设计空间,重点关注各种workloads和推荐这种混合设计的自动化工具。
To summarize, this paper makes the following contributions:
• We present an extensive experimental study using micro-benchmarks to systematically quantify the trade-offs associated with hybrid physical designs in a commercial RDBMS.
• We extend a commercial physical design tuning tool to add the ability to analyze and recommend hybrid physical de- signs based on the workload’s characteristics.
• End-to-end experiments with several standard benchmarks and real-world customer workloads reveal that hybrid physical designs can result in orders of magnitude performance gains compared to B+ tree-only or columnstore-only designs.
总的来说,本文做出了以下贡献:
我们提出一个广泛的实验研究,使用micro-基准系统地量化与商业RDBMS中混合物理设计相关的权衡。我们扩展了一个商业物理设计调优工具,增加了基于工作负载特征分析和推荐混合物理设计的能力。使用多个标准基准测试和真实客户工作负载进行端对端实验表明,与B+树或仅列存储设计相比,混合物理设计可以带来数量级的性能提升。
SQL Server支持各种物理设计选项,如索引、物化视图和分区。在本文中,我们只关注SQL Server支持的各种索引。
B+ tree and columnstore: RDBMSs 支持B+树和列存储已经有几十年了。在数据分析工作负载方面,列存储的性能显著优于B+树。自从列存储出现以来,许多商业RDBMS供应商都增加了对列存储索引(CSI)的支持。尽管不同系统中列存储的高级设计是相似的,但是在创建索引组合的方式、如何构建、压缩、维护和更新索引方面存在许多不同之处。在本节中,我们将讨论在Microsoft SQL Server中列存储的具体实现。
SQL Server支持列存储作为存储数据的一种附加机制。与B+树类似,SQL Server中的列存储被视为索引,它可以是主存储(表中所有列的主存储),也可以是辅助存储(列子集的冗余存储)。SQL Server支持在同一个表上任意组合主索引和辅助索引。也就是说,主索引可以是堆文件、B+树或列存储。辅助索引可以是B+树或列存储,每个表只能有一个列存储索引。B+树索引提供了基于索引中的键列的数据排序,并允许高效查找,而SQL Server中的列存储不提供排序顺序,并为高效扫描进行了优化。列存储允许对密集的同质类型数组进行向量化操作,通常是对编码的值(在SQL Server中称为批处理模式),这比通常用于B+树的一次行(或行模式)执行效率要高得多。
Compression: 列存储支持压缩和对压缩数据的查询处理[1,2]。在构建columnstore时,SQL Server选择列的排序顺序,目的是最大化整个columnstore索引的压缩比。列存储支持压缩和对压缩数据的查询处理。在构建列存储=时,SQL Server选择列的排序顺序,目的是最大化整个列存储索引的压缩比。列存储索引压缩使用了几种编码技术,最著名的是字典编码和运行长度编码。字典编码将数据值从非数字域(如字符串)转换为数字域。运行长度编码压缩排序运行(例如,2,2,2,…, 2可以转换成2,k次重复)。SQL Server的列存储由行集组成,称为行组。行组包含100K−1M之间的行,这些行分别被压缩。行组中的每一列构成一个列段。主列和二级列存储使用相同的压缩算法,压缩段的结构相似。
**Updates:**插入通过增量存储处理,增量存储实现为B+树。批量加载的数据直接转换为压缩的行组。较小的点更新被处理为先删除后插入。主列存储和二级列存储在处理删除的方式上有所不同,这是由它们所优化的应用程序特征驱动的。辅助列存储,为操作分析优化,有一个删除缓冲区,它是一个B+树存储被删除的逻辑行。当删除一行时,它被插入到删除缓冲区中,允许快速的逻辑删除。但是,查询处理产生了压缩行组和删除缓冲区之间的anti-semi连接的额外开销。为了降低这种anti-semi连接的代价,后台进程会定期将删除缓冲区压缩为一个删除位图,存储被删除行的物理标识符,甚至将删除位图压缩为压缩段。另一方面,主列存储不支持删除缓冲区,只支持删除位图,通过避免anti-semi连接来优化扫描性能。因此,在主列存储中删除一行需要扫描压缩的行组以获得物理行定位器,该定位器被添加到删除位图中。因此,主列存储更适合于数据仓库中常见的扫描和批量加载,而次要列存储可以接受小的更新,同时对于为操作分析优化的扫描仍然有效。
我们使用微基准测试对数据和查询进行细粒度控制,以量化B+树和列存储之间的性能权衡,并确定混合物理设计至关重要的情况。我们在性能研究中使用以下几类workload:(a)使用具有不同选择性的单个谓词扫描来研究B+树的范围扫描与列存储扫描之间的权衡;(b)通过查询进行排序和分组,研究b +树支持的排序顺序的优点;©使用不同更新行数的更新语句来分析更新不同索引类型的成本;以及(d)不同读取和更新组合的混合工作负载。
Hardware: 略
Software: 略
Data set: 我们使用TPC-H和其他大小在1~100GB范围内的合成生成数据。合成数据集由列数不同的表组成。每一列包含均匀分布的32位整数,范围从0到 2 31 2^{31} 231−1(类似于Kester等人的)。
Methodology: 我们执行工作负载并测量执行(运行)时间、CPU时间、内存使用和磁盘I/O。我们使用查询存储监控查询性能,并通过Microsoft Windows性能监视器收集系统范围的性能统计数据。每个实验至少运行5次,我们报告收集的数据点的平均值。
我们的第一个实验研究了B+树的范围扫描和列存储的全扫描之间的权衡。我们使用一个包含单个整数列的10GB表。为了控制查询访问的数据量,我们使用一个简单的查询,该查询选择一组行并在其上计算一个聚合。我们使用查询 Q 1 Q_1 Q1:SELECT sum(col1) FROM table WHERE col1 < {1} 。其中,通过为谓词设置适当的参数来控制选择性。我们比较了cold and hot runs的主B+树查询与主列存储查询的性能。cold runs时,数据保存在硬盘上。
图1描绘了我们改变谓词的选择性时的执行时间和CPU时间(以毫秒为单位,以对数为尺度)。(我们使用选择性来表示表中符合谓词的行数,也就是说,更高的选择性意味着更多符合谓词的行。)对于选择性较低的值,B+树在执行时间上的性能明显优于CSI约1到2个数量级,在CPU时间上最高可达3个数量级。当选择性很小时,使用B+树意味着很少访问页面,而优化器选择单线程执行计划。与并行计划相比,这种顺序计划的cpu效率更高,并行计划是在CSI或B+树的更高选择性值时选择的(在我们的实验中约为0.2%)。当选择率为0.2%时,并行度(DOP)从1变化到40会导致执行时间的下降(图1(a))和CPU时间的跳跃(图1(b))。注意,对于冷运行,当需要从存储访问数据时,B+树的好处更显著,因为当查询的选择性较低时,它访问的数据明显较少。这种好处的程度取决于存储介质的带宽和访问延迟——存储越慢,B+树的好处就越明显。对于冷运行,执行时间的交叉点是10%。
请注意,列存储还受益于选择性非常强的查询访问的少量数据。SQL Server存储简单的聚合(最小和最大)的每列在每个段中允许数据跳过(或段消除),如果段被保证不包含与查询相关的数据。文献中提出了几种方法来帮助这种数据跳跃。例如:(a)排序的列存储,如C-Store和Vertica中的投影; 或者(b)每个列段的小的物化总量(例如,最小值,最大值,总和,计数)。
现在,我们将研究如果列存储能够更积极地跳过数据,那么它们与B+树相比将如何。SQL Server不提供CSI中特定列的排序顺序保证。但是,如果在构建CSI时,数据在特定的列C1上进行了预排序,则会对C1中不同分段的取值范围进行排序,如果在C1上有谓词,则可以利用这一排序来消除不相关的分段。
为了实现谓词在col1上的Q1的这种行为,我们在构建CSI之前对col1上的数据进行排序,并比较CSI在以随机顺序构建数据与在col1上排序数据时的性能。图2报告了执行时间和冷运行时读取的数据量(以MB为单位),随着选择性的改变。正如预期的那样,排序的范围允许跳过更多的段,使CSI在B+树中更具竞争力。根据图2(a),对于排序后的CSI,交叉选择性移动到0.09%(对于随机数据的CSI,交叉选择性移动到约10%)。从图2(b)中可以明显看出,与未排序CSI相比,排序CSI访问的数据要少一到两个数量级。但是,请注意,数据访问交叉大约是10%,这意味着使用CSI,查询延迟与B+树相当,即使访问的数据比CSI多一个数量级。这种效率可以归因于CSI中的向量化处理以及其他优化,比如访问和预取更大的数据块(CSI中的兆字节比B+树中的千字节)。在附录A.1中,我们给出了CPU时间的图表。
中间结果分析略
我们在表1中总结了微基准测试研究的主要发现,其中我们确定了哪个物理设计选项(在B+树主CSI和二级CSI中)适合于特定类型的查询模式。我们区分了主次CSI(不像B+树),因为它们的更新特征不同。简而言之,B+树索引适用于短期扫描,其中索引允许有效的点和短期查找。B+树也是更新成本最低的。另一方面,主csi最适合用于数据仓库和分析工作负载中典型的大型扫描和批量更新。二级csi可以在生成数据的OLTP,应用程序也在运行的同一个数据库上为操作分析提供显著的加速。基本workload axes可以以各种方式组合,其中需要混合基本物理设计轴以获得最佳性能。
第3节的实证结果突出了B+树和列存储的相对优势,并表明了将它们组合在特定工作负载下的潜力。但是,为工作负载选择适当的物理设计可能是一个困难的问题,即使对专家DBA来说也是如此。甚至在引入列存储索引之前,一些商业dbms就开发了具有行业实力的物理设计调优顾问,可以针对给定的SQL查询和更新工作负载自动推荐物理设计结构(例如B+树索引、物化视图)的良好组合。
Microsoft SQL Server提供了数据库引擎优化顾问(DTA)[4,9]帮助分析复杂空间的物理设计选择。DTA可以在一个整体搜索和成本计算框架中推荐B+树索引(主要和/或次要)、物化视图和分区。我们扩展了DTA来分析B+树和列存储索引的组合空间。通过分析工作负载,DTA现在能够推荐B+树索引、列存储索引或组合索引。这个版本的dta于2017年1月发布,作为Microsoft SQL Server 2017的社区技术预览(CTP)版本的一部分。在本节中,我们将:(a)突出在物理数据库设计中合并列存储索引时出现的一些挑战,(b)通过描述DTA中的关键更改来概述我们的解决方案。我们首先对DTA的体系结构进行简要概述。
给定用户指定的workload W(这是一组具有相关权重的SQL语句),DTA执行基于成本的搜索来识别一组物理设计更改,这些更改将在总存储预算等约束下最小化W的总优化器估计成本。图7提供了DTA的体系结构和一些关键组件的概述。在这里,我们将重点放在组件上,这些组件对于理解我们在DTA中支持混合物理设计(包括列存储索引)是必要的;读者可以参考Agrawal et al.和Chaudhuri et al.获取更多细节。尽管DTA可以推荐物化视图和分区,但为了便于阐述,我们只关注索引。
DTA的第一阶段是每个查询的本地分析,称为候选选择,其中DTA分析每个查询Q∈W,以确定最优索引集。一旦为每个Q确定了最优索引集,DTA将执行全局工作负载级分析阶段。全局分析的第一步是索引合并,它探索了在同一个表上合并索引的潜力。随后,DTA对所有索引(候选索引和合并索引的并集)进行全局搜索,并在W中进行查询,以找到在指定约束条件下使W总代价最小的索引集。
DTA使用基于成本的搜索——它的目标是找到满足指定约束的工作负载的最低优化估计成本的配置。
为了对尚未构建的索引进行成本计算,DTA使用一个“假设”API来模拟假设的索引,这些索引是服务器上的元数据条目,足以让优化器生成在构建索引时将使用的预估计划。对于给定的查询Q和配置C,该API返回优化器将使用的估计查询计划(及其成本)(如果配置要实现的话)。
要用假设的索引来编译执行计划,优化器需要索引元数据(例如,索引中的列)、行数和索引大小来确定访问索引中相关页面的成本。对于B+树索引,索引的所有列部分都存储在叶页上。因此,如果优化器考虑B+树索引,则索引中与回答查询相关的页数与查询所需的列数无关。但是,由于列存储索引是按列存储的,所以执行引擎只需要访问与查询相关的列。因此,优化器需要columnstore索引的每个列大小来估计访问给定查询的columnstore索引的成本。
我们向SQL Server的查询优化器添加了两个扩展,以“假设”模式考虑列存储索引。首先,我们扩展了引擎,以支持为假设的列存储创建相关元数据。此扩展允许优化器将这些假设的索引识别为列存储索引,以启用与物化列存储相同的搜索和转换规则集。其次,我们增强了优化器的“假设”API,以添加为列存储索引指定每列大小的能力。这个扩展对于以“假设”模式考虑现有的和假设的列存储非常有用。
我们在DTA中添加了选择性推荐列存储索引的功能,并结合了DTA已经支持的所有其他物理设计建议。我们支持推荐表上的主从列存储索引。
Candidate Selection.
第一个阶段是在DTA选择分析单个查询的候选列存储索引期间识别候选列存储索引。我们只考虑查询中引用的表上的列存储索引。SQL Server对一些不能包含在列存储索引中的列数据类型有限制。我们使用数据库模式信息来确定哪些列可以包含在columnstore索引中。由于我们同时支持主从列存储索引建议,因此这种数据类型限制会影响DTA可以推荐的列存储类型。例如,如果一个表的列的数据类型不受columnstore索引的支持,我们就不能在这个表上建立主columnstore索引,因为主索引必须包括所有的列。我们通过排除不支持的列类型来考虑候选辅助索引。
编写时,SQL Server每个表只支持一个列存储索引。这一限制影响了CSI候选人的选择。CSI候选列中包含两种可选列:(i)只包含在工作负载的SELECT语句中引用的列;(ii)包括所有类型可以包含在CSI中的表列。虽然我们的算法可以支持选项(i),但我们在实现中选择了选项(ii)。部分原因是,如果查询没有访问某个列,那么执行引擎就不需要访问这些列。因此,与拥有更宽的B+树索引不同,CSI中拥有额外的列不会影响查询执行成本。此外,使用选项(i),我们必须建立最宽的列存储索引,包括在工作负载中引用过的表中的所有列,在许多情况下是表中的所有列。此外,通过在columnstore索引候选中包含所有列,它对于可能引用表中其他列的临时查询仍然有用。但是,请注意,如果频繁更新表,那么这种设计选择可能会增加这些csi的维护成本。工作负载级搜索会考虑此维护成本。除了DTA现有的用于B+树索引的算法生成的任何B+树索引候选项之外,还生成CSI候选项。
一旦组候选人columnstore和B +树索引生成、DTA为候选人创造必要的假设的索引(如果不是已经创建另一个查询),然后利用“假设”API来确定哪些子集的索引和查询优化器引用的引用配置的成本。其余的DTA的候选选择算法不需要做进一步的修改.
Workload-level Search.
一旦确定了候选索引,下一个阶段就是搜索备选配置,以确定哪些索引对工作负载有利。
由于columnstore和B+ tree不能合并,并且我们考虑的是一个包含所有允许列的columnstore,当合并两个索引时,如果一个columnstore中至少有一个索引,那么候选索引不合并。合并之后,全局搜索会找到降低总工作负载成本的配置。这个阶段唯一的变化是:(a)任何有columnstore索引的配置必须限制为每个表一个索引;(b)当使用列存储进行配置成本计算时,我们需要估计每个列的大小,并使用扩展的“假设”API进行成本计算。
Variants of columnstore indexes.
Columnstore size estimation.
Impact on query optimizer and execution.
许多商业RDBMSs支持同一个数据库和表上的列存储和B+树索引。我们研究了这种混合物理设计的设计空间,其中列存储和B+树索引都可以在商业RDBMS上下文中建立在相同的数据库和表上。我们的实验分析(使用设计的micro-benchmarks)表明,columnstore和B+树索引的适当组合可以为多个workload模式带来一个数量级的更好的执行成本。我们提出了一个数据库引擎调优顾问的扩展,这是一个商业强度的调优工具,用于Microsoft SQL Server分析和自动推荐一组B+树和列存储索引适合特定的workload。我们使用各种行业标准的基准以及真实世界的客户工作负载进行了广泛的实验,这证明了混合物理设计确实可以有效地解决许多workload。DTA可以利用B+树和列存储的优点,通过使用工作负载来确定适当的仅列存储、B+树或混合推荐。未来,我们计划细化列存储大小估计算法,并研究影响混合物理设计执行成本的其他方面。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。