高性能、快响应!火山引擎 ByteHouse 物化视图功能及入门介绍

这篇具有很好参考价值的文章主要介绍了高性能、快响应!火山引擎 ByteHouse 物化视图功能及入门介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群

物化视图是指将视图的计算结果存储在数据库中的一种技术。当用户执行查询时,数据库会直接从已经预计算好的结果中获取数据,而不需要重新计算视图。具体来说,物化视图是一种以表格形式存储的结果集合。当创建一个物化视图时,数据库会在后台对视图进行计算,并将结果存储在表中。当用户查询该视图时,数据库会直接从表中获取结果,而不需要重新计算视图。这样可以大大提高查询性能和响应速度。

在使用物化视图时,需要注意以下四点:

  • 物化视图的计算结果需要实时更新。如果源数据发生变化,需要及时更新物化视图的计算结果,以确保结果的准确性。

  • 物化视图需要占用存储空间。由于物化视图需要将计算结果存储在表中,因此会占用一定的存储空间。在使用物化视图时,需要权衡存储空间和查询性能的关系。

  • 物化视图需要考虑查询的复杂度。对于一些复杂的查询语句,物化视图可能无法提高查询性能。因此,在使用物化视图时,需要对查询语句进行分析和优化,以确保能够发挥物化视图的最大作用。

  • 总之,物化视图是一种非常实用的技术,可以帮助我们提高数据库的查询性能和响应速度。在实际应用中,我们需要根据实际情况进行权衡和优化,以充分发挥物化视图的作用。

应用场景介绍

物化视图作为日常提高数据库查询性能和响应速度的一种实用技术,可以帮助业务人员在多个场景中收获价值。

  • 场景 1:数据分析场景

以字节跳动举例,我们每天要处理大量的数据,比如包括用户行为数据、广告投放数据等等。这些数据往往需要进行复杂的查询和分析,使用物化视图来存储经常使用的数据,就可以减少复杂查询的执行时间,提高数据分析的效率。

  • 场景 2:广告投放场景

在广告投放场景中,业务人员需要对广告投放数据进行实时监控和分析。物化视图可以帮助存储广告投放数据的计算结果,以便快速查询和分析。通过物化视图,快速地检测广告投放中的问题,减少广告投放的错误率,提高广告平台的效率和盈利能力。

  • 场景 3:推荐系统

众所周知,推荐系统每天都需要对大量数据进行复杂计算与分析。通过使用物化视图,将计算结果存储在表格中,减少计算复杂度,提高推荐系统的响应速度。比如,我们可以通过物化视图存储用户的兴趣标签,加速对用户的个性化推荐。

ByteHouse 物化视图快速入门

在 ByteHouse 客户的实际应用中,物化视图功能可以应用于许多场景。

比如,在电子商务网站中,我们可以创建一个物化视图,用于计算每个用户的订单总额。当需要查询某个用户的订单总额时,数据库只需要从物化视图中获取结果,而不需要重新计算,这可以大大提高查询的速度。

ByteHouse 客户——Chainbase 便是一个例子。Chainbase 是一个 Web3 开发者平台,为开发人员提供云化的 API 服务,以帮助接入加密网络、轻松构建可扩展的 Web3 原生应用。

开发者们可以使用 ChainBase,来构建高效、安全的区块链应用。ByteHouse 提供的物化视图功能,不仅能让 ChainBase 的查询速度得到提升,同时还实现了实时可视化的数据分析,大大提升了数据库查询分析的效率。

高性能、快响应!火山引擎 ByteHouse 物化视图功能及入门介绍

 

ByteHouse 的物化视图功能具备 7 个显著特点:

  • 始终保持最新

  • 可以手动或自动更新

  • 易于使用,可以通过界面或 SQL 进行管理

  • ByteHouse 会自动为高频复杂查询创建物化视图

  • 企业级功能

  • 支持 RBAC

  • 提供统计数据和建议,帮助用户优化物化视图

下面简单介绍如何快速入门,使用 ByteHouse 物化视图功能:

用户界面

  1. 进入物化视图:数据库 > 新建 > 新建物化视图

高性能、快响应!火山引擎 ByteHouse 物化视图功能及入门介绍

 2. 根据 SQL 样例,填写物化视图语句。

高性能、快响应!火山引擎 ByteHouse 物化视图功能及入门介绍

 3.创建成功后。如果需要对以往历史的数据分区进行物化,根据 SQL 样例,手动刷新所定义分区。

高性能、快响应!火山引擎 ByteHouse 物化视图功能及入门介绍

 

如何进行 SQL 创建

推荐用法 - 手动定义目标表(target_table_name)的物化视图创建方法

CREATE MATERIALIZED VIEW [IF NOT EXISTS] mv_name [TO [db_name.]target_table_name]
AS SELECT select_statement FROM base_table_name;

 

其他用法 - 系统内部定义目标表的物化视图创建方法

 
CREATE MATERIALIZED VIEW [IF NOT EXISTS] mv_name(
[col1 DataType1]
[col2 DataType2]
...
)
[ENGINE = engine_name]
[PARTITION BY par_name]
[ORDER BY col_name [POPULATE]]
AS SELECT select_statement FROM base_table_name;

 

如何更新物化视图

在创建物化视图时刻起,物化视图的数据与原始表的数据同步更新,如果需要对以往历史的数据分区进行物化,对于运行中的物化视图,我们提供了刷新分区功能。

更新语法

 
REFRESH MATERIALIZED VIEW xxx PARTITION xxx 

例子:

  • refresh materialized view test partition '2019-01-01' (同步'2019-01-01'分区的原始数据)

更新过程

该功能用来更新物化视图表的某个分区数据,并默认进行级联操作,即更新该视图表分区数据的同时,会同时更新依赖于当前视图表的所有物化视图的同一 partition,并一直级联传递下去。如果不想级联,可以加上 SETTINGS,设置 cascading_refresh_materialized_view 为 0,即:

 
refresh MATERIALIZED VIEW xxx PARTITION xxx SETTINGS cascading_refresh_materialized_view = 0

 

在更新视图分区数据时,相应底表分区的数据量可能十分巨大,更新会占用许多 CPU 和内存,还可能会导致更新失败,这时可以使用参数 max_rows_to_refresh_by_partition。在 Clickhouse 中一个 partition 由多个数据 part 组成,使用该参数,我们可以控制在该 partition 单机数据总行数超过该参数定义的值时,基于 part 级别一部分一部分的更新该分区,而不是在整个 partition 上进行更新,这样可以控制资源使用量。当然,如果视图是聚合表,按 part 一部分一部分的进行更新会导致最后视图数据的聚合效果不如在整个 partition 上进行更新,需要自己进行平衡。该参数默认值是 100000000 (1 亿),使用例子:

 
refresh MATERIALIZED VIEW xxx PARTITION xxx SETTINGS max_rows_to_refresh_by_partition = xxx

此外,可以使用 partitionStatus 函数获取一张物化视图表对应分区的状态,状态有三类:None (表示分区不存在),Normal (表示分区存在并处于正常状态),Refreshing (表示分区正在被更新)。例子:

 
select partitionStatus(test, test_mv, '2020-01-01')

如何管理物化视图

入口:数据库 > 物化视图

高性能、快响应!火山引擎 ByteHouse 物化视图功能及入门介绍

 

Bytehouse 会列出数据库中的所有物化视图,以及它们的底表/目标表行数比例,以及命中率。

  • 底表/目标表行数比例:当该比例>10,则表示该物化视图比较有效率

  • 命中率:当该命中率较高时,则表示该物化视图在 60 天内经常被访问

如何查询物化视图

用户可以直接查询物化视图,但一般推荐直接查询底表。Bytehouse 优化器会自动做出查询改写,以大幅度改善查询处理时间。

如何删除物化视图

用户可以通过界面或者 SQL 删除物化视图。

界面

如果用户创建了目标表,也需要手动 drop 目标表。

高性能、快响应!火山引擎 ByteHouse 物化视图功能及入门介绍

 

SQL

如果用户创建了目标表,也需要手动 drop 目标表。

drop view xxxx

 

 

点击跳转 火山引擎云原生数据仓库ByteHouse 了解更多文章来源地址https://www.toymoban.com/news/detail-427051.html

到了这里,关于高性能、快响应!火山引擎 ByteHouse 物化视图功能及入门介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis实现高性能的全文搜索引擎---RediSearch

    RediSearch是一个Redis模块,为Redis提供查询、二次索引和全文搜索,他的性能甚至比es还要高。 注意端口号不要和redis冲突了:

    2024年02月16日
    浏览(49)
  • 火山引擎ByteHouse:一套方案,让OLAP引擎在精准投放场景更高效

    由于流量红利逐渐消退,越来越多的广告企业和从业者开始探索精细化营销的新路径,取代以往的全流量、粗放式的广告轰炸。精细化营销意味着要在数以亿计的人群中优选出那些最具潜力的目标受众,这无疑对提供基础引擎支持的数据仓库能力,提出了极大的技术挑战。

    2024年02月12日
    浏览(29)
  • 网易NDH基于Impala的高性能SQL引擎建设实践

    导读:本文将从四个方面来进行介绍。首先是分析在网易NDH中使用 Impala 过程遇到的一些痛点;第二个部分是基于这些痛点问题,我们提出了建设高性能SQL引擎的方案,以及这些方案是基于什么原则来创建的;第三个是基于这些原则,我们做了哪些的优化实践的尝试;最后会

    2024年02月09日
    浏览(33)
  • 火山引擎 ByteHouse:只需 2 个方法,增强 ClickHouse 数据导入能力

    更多技术交流、求职机会,欢迎关注 字节跳动数据平台微信公众号,回复【1】进入官方交流群   作为企业数字化建设的必备要素,易用的数据引擎能帮助企业提升数据使用效率,更好提升数据应用价值,夯实数字化建设基础。 数据导入是衡量 OLAP 引擎性能及易用性的重要标

    2024年02月08日
    浏览(32)
  • 【java表达式引擎】四、高性能、轻量级的AviatorScript

    github:(https://github.com/killme2008/aviatorscript%60) 参考文档1:https://www.yuque.com/boyan-avfmj/aviatorscript 参考博客2:https://blog.csdn.net/ZhangQingmu/article/details/125087255 Aviator起源于2011年,由国内的开发者开源的,表达式引擎 表达式引擎当时国内开源的已经有 IKExpression,可惜是纯解释执行的,

    2024年02月10日
    浏览(41)
  • 工业级高性能3D模型渲染引擎,专注于3D Web轻量化!

    一、技术概览 HOOPS Communicator 是一个SDK,用于在Web浏览器中开发3D工程应用程序,重点在于: 完全访问工程数据 使用方便 快速发展 高性能可视化 快速模型流 灵活使用和部署 点击此处获取3D模型轻量化及格式转换解决方案 它的主要组件是 HOOPS Web查看器,这是一个功能强大

    2024年02月07日
    浏览(27)
  • OLAP引擎也能实现高性能向量检索,据说QPS高于milvus!

    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 随着LLM技术应用及落地,数据库需要提高向量分析以及AI支持能力,向量数据库及向量检索等能力“异军突起”,迎来业界持续不断关注。简单来说,向量检索技术以及向量数据库能

    2024年01月16日
    浏览(42)
  • 生态兼容性进一步提升!白鲸开源 WhaleStudio 与火山引擎ByteHouse完成产品互认

    数据作为新型生产要素,已快速融入生产、分配、流通、消费和社会服务管理等各环节,深刻改变着生产方式、生活方式和治理方式。越来越多企业也在尝试充分利用数据要素,开辟全新发展路径,进一步实现业务价值提升。 在数字化转型的大背景之下,白鲸开源旗下Whale

    2024年02月08日
    浏览(29)
  • 《高性能MySQL》——创建高性能的索引(笔记)

    索引(在MySQL中也叫做“键(key)”) 是存储引擎用于快速找到记录的一种数据结构。 索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。 在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但当数据量逐渐增大时

    2024年02月07日
    浏览(93)
  • 【Linux高性能服务器编程】——高性能服务器框架

      hello !大家好呀! 欢迎大家来到我的Linux高性能服务器编程系列之高性能服务器框架介绍,在这篇文章中, 你将会学习到高效的创建自己的高性能服务器,并且我会给出源码进行剖析,以及手绘UML图来帮助大家来理解,希望能让大家更能了解网络编程技术!!! 希望这篇

    2024年04月25日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包