HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    查询优化主要是物理方法的优化(查询优化方法有效的是)

    发布时间:2023-04-13 13:24:05     稿源: 创意岭    阅读: 138        

    大家好!今天让创意岭的小编来大家介绍下关于查询优化主要是物理方法的优化的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008

    本文目录:

    查询优化主要是物理方法的优化(查询优化方法有效的是)

    一、ClickHouse 21.7.3.14-2(十) 查询优化

    Prewhere 和 where 语句的作用相同,用来过滤数据。不同之处在于 prewhere 只支持 *MergeTree 族系列引擎的表,首先会读取指定的列数据,来判断数据过滤,等待数据过滤之后再读取 select 声明的列字段来补全其余属性。

    当查询列明显多于筛选列时使用 Prewhere 可十倍提升查询性能,Prewhere 会自动优化执行过滤阶段的数据读取方式,降低 io 操作。

    在某些场合下,prewhere 语句比 where 语句处理的数据量更少性能更高。

    默认情况,我们肯定不会关闭 where 自动优化成 prewhere,但是某些场景即使开启优化,也不会自动转换成 prewhere,需要手动指定 prewhere:

    通过采样运算可极大提升数据分析的性能

    采样修饰符只有在 MergeTree engine 表中才有效,且在创建表时需要指定采样策略。

    数据量太大时应避免使用 select * 操作,查询的性能会与查询的字段大小和数量成线性表,换字段越少,消耗的 io 资源越少,性能就会越高。

    分区裁剪就是只读取需要的分区,在过滤条件中指定。

    千万以上数据集进行 order by 查询时需要搭配 where 条件和 limit 语句一起使用。

    如非必须,不要在结果集上构建虚拟列,虚拟列非常消耗资源浪费性能,可以考虑在前端进行处理,或者在表中构造实际字段进行额外存储。

    性能可提升 10 倍以上,uniqCombined 底层采用类似 HyperLogLog 算法实现,能接受 2%左右的数据误差,可直接使用这种去重方式提升查询性能。Count(distinct) 会使用 uniqExact 精确去重。

    不建议在千万级不同数据上执行 distinct 去重查询,改为近似去重 uniqCombine

    为了避免因个别慢查询引起的服务雪崩的问题,除了可以为单个查询设置超时以外,还可以配置周期熔断,在一个查询周期内,如果用户频繁进行慢查询操作超出规定阈值后将无法继续进行查询操作。

    物理内存和虚拟内存的数据交换,会导致查询变慢,资源允许的情况下关闭虚拟内存。

    为每一个账户添加 join_use_nulls 配置,左表中的一条记录在右表中不存在,右表的相应字段会返回该字段相应数据类型的默认值,而不是标准 SQL 中的 Null 值。

    批量写入数据时,必须控制每个批次的数据中涉及到的分区的数量,在写入之前最好对需要导入的数据进行排序。无序的数据或者涉及的分区太多,会导致 ClickHouse 无法及时对新导入的数据进行合并,从而影响查询性能。

    cpu 一般在 50%左右会出现查询波动,达到 70%会出现大范围的查询超时,cpu 是最关键的指标,要非常关注。

    clickhouse的多表关联会把有表的数据全部加入到内存中,然后左表每条去和内存中的数据做对比。一旦左表数据量过大,容易导致内存不够。

    当多表联查时,查询的数据仅从其中一张表出时,可以考虑用 IN 操作而不是 join。

    多表 join 时要满足 小表在右 的原则,右表关联时被加载到内存中与左表进行比较,ClickHouse 中无论是 Left join 、Right join 还是 Inner join 永远都是拿着右表中的每一条记录到左表中查找该记录是否存在,所以右表必须是小表。

    ClickHouse 在 join 查询时不会主动发起谓词下推的操作,需要每个子查询提前完成过滤操作,需要注意的是,是否执行谓词下推,对性能影响差别很大(新版本中已经不存在此问题,但是需要注意谓词的位置的不同依然有性能的差异)

    两张分布式表上的 IN 和 JOIN 之前 必须加上 GLOBAL 关键字 ,右表只会在接收查询请求的那个节点查询一次,并将其分发到其他节点上。如果不加 GLOBAL 关键字的话,左分布式表的每个节点都会单独发起一次对右表的查询,而右表又是分布式表,就导致右表一共会被查询 N²次(N是该分布式表的分片数量),这就是查询放大,会带来很大开销。

    将一些需要关联分析的业务创建成字典表进行 join 操作,前提是字典表不宜太大,因为字典表会常驻内存, 官方地址

    通过增加逻辑过滤可以减少数据扫描,达到提高执行速度及降低内存消耗的目的

    二、试述查询优化在关系数据库系统中的重要性 (数据库系统简答题)

    查询优化分为数据库性能的优化和应用程序的优化

    1)数据库性能的优化

    一个数据库系统的生命周期可以分成:设计、开发和成品三个阶段。在设计阶段进行数据库性能优化的成本最低,收益最大。在成品阶段进行数据库性能优化的成本最高,收益最小。

    数据库的优化通常可以通过对网络、硬件、操作系统、数据库参数和应用程序的优化来进行。最常见的优化手段就是对硬件的升级。根据统计,对网络、硬件、操作系统、数据库参数进行优化所获得的性能提升,全部加起来占数据库系统性能提升的40%左右。

    2)应用程序的优化

    应用程序的优化通常可分为两个方面:源代码和SQL语句。由于涉及到对程序逻辑的改变,源代码的优化在时间成本和风险上代价很高,而对数据库系统性能的提升收效有限。 优化SQL语句的传统方法是通过手工重写来对SQL语句进行优化。DBA或资深程序员通过对SQL语句执行计划的分析,依靠经验,尝试重写SQL语句,然后对结果和性能进行比较,以试图找到性能较佳的SQL语句。这种传统上的作法无法找出SQL语句的所有可能写法,且依赖于人的经验,非常耗费时间,但是60%系统性能提升来自对应用程序的优化。许多优化专家认为,对应用程序的优化可以得到80%的系统性能的提升。

    三、数据库查询有哪些优化方面

    1 SQL查询语句的重写,对于一个查询可以用多种查询语句实现,但不同查询语句的数据库执行计划是不同的,一旦不能够使用索引或造成较大的内存占用会导致性能下降,因此需要对查询语句进行重写优化,最典型的例子就是not in语句使用外连接方式实现来进行优化

    2 创建合理的索引结构,根据查询语句的中查询条件,在关系表上建立相应的索引,如B+树索引和hash索引

    3 修改程序业务逻辑,有些功能如果使用SQL语句实现,不但SQL语句复杂,还将导致数据库的负担增加,因此可以将有些数据操作的业务逻辑放到应用层进行实现,就是通过java编程实现

    4 修改数据库服务器相关参数,优化服务器性能

    四、数据库系统概论这门课程第九章关系查询处理和查询优化的知识点有哪些?

    数据库系统概论这门课第九章关系查询处理和查询优化的知识点包含章节导引,第一节关系数据库系统的查询处理,第二节关系数据库系统的查询优化,第三节代数优化,第四节物理优化,第五节小结与实验,。

    以上就是关于查询优化主要是物理方法的优化相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    抖音关键词排名查询接口(抖音关键词搜索综合排名)

    如何查看别人淘宝店铺销量(淘宝大数据查询平台)

    美的家装饰公司地址(美的家装饰公司地址查询)

    设计包装图案多少钱(设计包装图案多少钱一套)

    杭州秋涛北路摄影器材