当前位置: 首页 > news >正文

微信小程序可以做电影网站吗/跨境电商平台哪个最好最可靠

微信小程序可以做电影网站吗,跨境电商平台哪个最好最可靠,淄博网站建设高端企业,湖南网站建设kaodezhu在OceanBase 4.3版本发布后(OceanBase社区版 V4.3 免费下载),其新增的列存引擎,及行列混存一体化的能力,可以支持秒级实时分析,引发了用户、开发者及业界人士的广泛讨论。本文选取了这些讨论中较为典型的一…

在OceanBase 4.3版本发布后(OceanBase社区版 V4.3 免费下载),其新增的列存引擎,及行列混存一体化的能力,可以支持秒级实时分析,引发了用户、开发者及业界人士的广泛讨论。本文选取了这些讨论中较为典型的一些问题,以解答大家的疑惑。

Q1:OceanBase 列存是什么?

OceanBase的列存技术是一种数据存储形态,它将磁盘上的静态数据以列存的方式保存,而将内存中的修改数据以行存的方式保存,这种设计既保证了高效的扫描性能,又兼顾了出色的事务处理能力。

对于分析类查询,列存可以极大地提升查询性能,也是OceanBase做好 HTAP 的一项不可缺少的功能。经典 AP 数据库,列存数据通常是静态的,很难被原地更新,而 OceanBase 的 LSM Tree 架构中 SSTable 是静态的,天然适合列存的实现;MemTable 是动态的,仍然是行存,对于事务处理不会造成额外影响,这样我们可以一定程度上兼顾 TP 类和 AP 类查询的性能。

Q2:列存版推荐配置是什么?


# 设置 collation 为 utf8mb4_bin,性能瞬间提升 15%
set global collation_connection = utf8mb4_bin;
set global collation_server = utf8mb4_bin;set global ob_query_timeout= 10000000000;
set global ob_trx_timeout= 100000000000;
set global ob_sql_work_area_percentage=30;
set global max_allowed_packet=67108864;
# 建议是cpu的10倍
set global parallel_servers_target=1000;
set global parallel_degree_policy = auto;
set global parallel_min_scan_time_threshold = 10;
# 限制 parallel_degree_policy = auto 时的最大 dop
# 出现较大 dop 可能导致性能问题。下面的值建议设为 cpu_count * 2
set global parallel_degree_limit = 0; alter system set compaction_low_thread_score = cpu_count;
alter system set compaction_mid_thread_score = cpu_count;
alter system set default_table_store_format = "column";

注:上述代码中 cpu_count 表示创建租户时指定的 min_cpu。

Q3:如何让租户创建出来的表,默认就是列存表?

这很简单,设置一个租户级配置项即可:

alter system set default_table_store_format = "column";

相应地,也可以把默认建表做成行存,或者行存列存双份:

alter system set default_table_store_format = "row";   //行存
alter system set default_table_store_format = "compound"; //行存列存双份数据

Q4:列存表的空间占用和行存表比怎么样?

列存表的空间比行存表省 20% 左右。为什么不是更多?因为OceanBase的行存表,压缩能力已经非常强了!

下面是一个客户自己测试 TPC-H 100G 的结果,供参考:

1718087748

Q5:如何创建一个列存表?

首先,创建行列混合表(冗余行存列存表)。

非分区表

create table t1(c1 TINYINT,c2 SMALLINT,c3 MEDIUMINT
) with column group (all columns, each column);

分区表:

create table t2(pk int,c1 int,c2 int,primary key (pk)
)
partition by hash(pk) partitions 4
with column group (all columns, each column);

创建行列混合的列存表的时候,总是会用到 with column group (all columns, each column)语法,它表示的意思如下:

  • all columns。把所有列聚合在一起成组,看成一个宽列,一行一行存储。这其实就和原来的行存是一致的。
  • each column。表中的每一列分别使用列格式来存储。

all columns、each column 一起出现,意味着默认创建列存表后同时冗余行存, 每个副本存储两份基线数据。不过值得注意的是,每张表无论多少份基线数据,在 memtable 和转储里的增量数据,依然是共享同一份。

其次,创建纯列存表。

非分区表

create table t3(c1 TINYINT,c2 SMALLINT,c3 MEDIUMINT
) with column group (each column);

分区表:

create table t4(pk1 int,pk2 int,c1 int,c2 int,primary key (pk1, pk2)
)
partition by hash(pk1) partitions 4
with column group (each column);

对于 t4 表,会针对 pk1、pk2、c1、c2 分别建一个列存,同时还会针对 (pk1, pk2)组合建一个行存。

Q6:如何判断是否走到了列存?

扫描走行存时,explain 中显示的是 TABLE FULL SCAN,走到列存时,显示的是 COLUMN TABLE FULL SCAN。以访问下面的 t5 表为例:

create table t5(c1 TINYINT,c2 SMALLINT,c3 MEDIUMINT,c4 INT,c5 INT,PRIMARY KEY(c1, c2)
) with column group(all columns, each column);OceanBase(admin@test)>explain select c1,c2 from t5;
+------------------------------------------------------------------------+
| Query Plan                                                             |
+------------------------------------------------------------------------+
| ===============================================                        |
| |ID|OPERATOR       |NAME|EST.ROWS|EST.TIME(us)|                        |
| -----------------------------------------------                        |
| |0 |TABLE FULL SCAN|t5  |1       |3           |                        |
| ===============================================                        |
| Outputs & filters:                                                     |
| -------------------------------------                                  |
|   0 - output([t5.c1], [t5.c2]), filter(nil), rowset=16                 |
|       access([t5.c1], [t5.c2]), partitions(p0)                         |
|       is_index_back=false, is_global_index=false,                      |
|       range_key([t5.c1], [t5.c2]), range(MIN,MIN ; MAX,MAX)always true |
+------------------------------------------------------------------------+
11 rows in set (0.011 sec)OceanBase(admin@test)>explain select c1 from t5;
+------------------------------------------------------------------------+
| Query Plan                                                             |
+------------------------------------------------------------------------+
| ======================================================                 |
| |ID|OPERATOR              |NAME|EST.ROWS|EST.TIME(us)|                 |
| ------------------------------------------------------                 |
| |0 |COLUMN TABLE FULL SCAN|t5  |1       |3           |                 |
| ======================================================                 |
| Outputs & filters:                                                     |
| -------------------------------------                                  |
|   0 - output([t5.c1]), filter(nil), rowset=16                          |
|       access([t5.c1]), partitions(p0)                                  |
|       is_index_back=false, is_global_index=false,                      |
|       range_key([t5.c1], [t5.c2]), range(MIN,MIN ; MAX,MAX)always true |
+------------------------------------------------------------------------+
11 rows in set (0.003 sec)

Q7:列存支持更新吗?如何更新?memtable里的结构是怎样的?

OceanBase 中,增删改操作都在内存里完成,数据以行存的形式保存在 Memtable 里;而基线数据是只读的,以列存的形式保存在磁盘上。当读取一列数据时,会实时地融合Memtable 中的行存数据和磁盘里的列存数据,输出给用户。这意味着,OceanBase 支持强一致读列存,不会有数据延迟

写入memtable 的数据支持转储,转储数据依然以行存的形式保存。合并后,行存数据和基线列存数据融合,形成新的基线列存数据。

需要注意的是,对于列存表来说,如果存在大量更新操作,并且没有及时合并,查询性能是不优的。推荐批量导入数据后发起一次合并,可以获得最优的查询性能。少量更新,则对性能影响不大。

1718087768

1718087776

Q8:列存里支持部分列集合在一起存储吗?

OceanBase v4.3.3 及之前版本里,仅支持要么每个列独立存储,要么所有列组成行在一起存储。暂不支持任选若干列集合在一起存储。

Q9:最多支持多少列?

目前一个列存表最多支持 4096 列。

Q10:允许增删列吗?

允许增加列,允许删列。支持 varchar 列字符数改大、改小。

列存支持多种 DDL,和行存表无异。

Q11:支持对列存的某一列建索引吗?

支持对列存的某一列建索引。OceanBase 不区分是对列存建索引,还是对行存建索引,默认建出来的索引结构是一样的(行存格式)。

对列存某一列或几列建索引的意义在于可以构造一个覆盖索引,提升点查询性能,或者对特定列做排序以提升排序性能。

Q12:“列存索引”是什么意思?

OceanBase 还支持列存索引的概念,意思是:索引表的结构是列存格式。这里容易和“对列存建索引”混淆。

例如,我们已经有行存表 t6 ,希望对 c3 求和且性能最好,这时可以对 c3 建一个列存索引,例如:

create table t6(c1 TINYINT,c2 SMALLINT,c3 MEDIUMINT
);create /*+ parallel(2) */ index idx1 on t6(c3) with column group (each column);

除此之外,OceanBase还支持更多索引创建方式,如下:

//支持索引中冗余行存
create index idx1 on t1(c2) storing(c1) with column group(all columns, each column);
alter table t1 add index idx1 (c2) storing(c1) with column group(all columns, each column);//纯列存
create index idx1 on t1(c2) storing(c1) with column group(each column);
alter table t1 add index idx1 (c2) storing(c1) with column group(each column);

在数据库索引中使用 STORING 子句的目的是存储额外的非索引列数据到索引中。这可以为特定的查询提供性能优化,既可以避免回表,也可以降低索引排序的代价。当查询仅需要访问存储在索引中的列,而不需要回表查询原始行时,可以大幅提升查询效率。

Q13:列存表的查询有何特点?

冗余行存表中,列存表查询逻辑默认 range scan 走列存模式, point get 仍回退到行存模式。

纯列存表中,任何查询都走列存模式。

Q14:有和 ClickHouse 的性能对比吗?

OceanBase v4.3.1 没有发布测试性能数据。

我们内部对比过OceanBase v4.3.2 开发版和 ClickHouse 的性能,但目前没有第三方的测试和对比结果,因此下文的测试结果仅供参考。

(1)ClickBench(aws) RT 对比。

云上标准测试(c6a.4xlarge 500gb gp2) 配置:16C、32G内存、500G磁盘、1500 iops。

OBCK
cold run114.35139.572
hot run 136.8844.051
hot run 236.8336.831

该对比无Q30改写优化,若Q30改写优化后,OceanBase的测试结果预计可再提升2s。

Q15:使用列存有什么注意事项?

第一,批量导入数据后,建议做一次合并,读性能可以更优。导完数据后租户内触发一次合并,保证数据全部进入基线,租户内执行 alter system major freeze; 然后在系统租户执行 select STATUS from CDB_OB_MAJOR_COMPACTION where TENANT_ID = 租户ID; 判断合并是否完成,当 STATUS 变为 IDLE 即表示合并完成。

第二,合并后,推荐做一次统计信息收集。收集统计信息方法如下:

  • 在业务租户一键对所有表收集统计信息,启动16个线程并发收集

CALL DBMS_STATS.GATHER_SCHEMA_STATS ('db', granularity=>'auto', degree=>16); 

  • 观测统计信息进度可以通过视图 GV$OB_OPT_STAT_GATHER_MONITOR

第三,可以使用全量旁路导入逻辑批量导入数据,使用这种方式导入数据的表无需做合并,就能达到最优列存扫描性能。支持全量旁路导入的工具包括 obloader、原生 load data 命令。

第四,对于非大宽表场景,不使用列存也可能达到和列存相当的性能。这得益于 OceanBase 行存版本中微块级别的行列混合存储架构(遇到这种情况,不用惊讶)。

第五,大数据量表,cold run 和 hot run 性能有区别。

第六,优化器会根据代价估算,自动选择对列数据的访问使用行存还是列存。

第七,列存表合并速度会变慢。

Q16:什么是旁路导入?如何做旁路导入?

旁路导入是一种加快数据导入,并且能够加速数据查询的数据导入方式。大表数据导入,推荐使用旁路导入方式。目前,load data 命令、insert into select 语句支持旁路导入。旁路导入的详细使用方式参考 OceanBase 官网文档。

Q17:支持事务吗?对事务大小有限制吗?

和行存表一样,支持事务,并且事务大小无限制,具备高一致性。

和 Doris 相比,OceanBase 事务能实时性更好。OceanBase 支持大量小事务,而 Doris 必须攒批多行形成大事务后再提交。

Q18:支持使用 FlinkCDC 从其它数据库同步数据到 OceanBase 吗?

支持。例如,使用 FlinkCDC 从 MySQL 同步数据到 OceanBase:OceanBase分布式数据库-海量数据 笔笔算数

Q19:是否支持 Flink Connector 访问 OceanBase?

支持。详见 https://github.com/oceanbase/flink-connector-oceanbase

Q20:列存表的日志同步、备份恢复等有什么特别之处吗?

没有任何特别之处,和行存表一致。同步的日志都是行存模式。

Q21:是否支持将行存表用 DDL 变成列存表?

支持。通过加列存、删行存实现。相关语法示例如下。

create table t1( pk1 int, c2 int, primary key (pk1));alter table t1 add column group(all columns, each column);
alter table t1 drop column group(all columns, each column);alter table t1 add column group(each column);
alter table t1 drop column group(each column);
  • note:alter table t1 drop column group(all columns, each column);执行后,不用担心没有任何 group 来承载数据,所有列会被放到一个叫做 DEFAUTL COLUMN GROUP的默认 group 中。DEFAUTL COLUMN GROUP 中的存储格式,由租户级配置项 default_table_store_format的取值决定。
  • 该操作为 offline DDL,会锁表。线上谨慎使用。

Q22:还有哪些可以进一步提升 AP Query 性能的方法?

根据一些实践经验得知,首先如果不是有特殊排序要求,建表时候字符集不要使用 utf8mb4,而是使用 binary,可以提升性能。例如:

create table t5(c1 TINYINT, c2 VARVHAR(50)) CHARSET=binary with column group (each column);

其次,如用户或者业务可以接受, mysql 租户建表时指定 utf8mb4_bin 字符集,建表时带上:CHARSET = utf8mb4 collate=utf8mb4_bin

此外,增加 UNIT 的 IOPS,可以加速旁路导入。

Q23:面向列存的优化器,有什么特点?

面相列存的优化器,相对于面相行存优化器,增加了:

  • 优化器自主选择行、列存的能力。
  • hint 控制行、列存选择的能力(表级别)。
  • 适配了列存的计划代价计算。
  • 增加了列存的晚期物化优化。

以上就是目前关于列存的解答,如果大家有其他疑问,欢迎在评论区留言讨论。

相关文章:

OceanBase V4.3 列存引擎之场景问题汇总

在OceanBase 4.3版本发布后(OceanBase社区版 V4.3 免费下载),其新增的列存引擎,及行列混存一体化的能力,可以支持秒级实时分析,引发了用户、开发者及业界人士的广泛讨论。本文选取了这些讨论中较为典型的一…...

Spring中的Aware接口及应用场景

Spring框架提供了一些Aware接口,例如ApplicationContextAware, BeanFactoryAware, EnvironmentAware等,这些接口允许你的Bean获取Spring容器的资源。 例如,如果你的Bean实现了ApplicationContextAware接口,那么Spring在启动的时候…...

设计模式 - 建造者模式

💝💝💝首先,欢迎各位来到我的博客!本文深入理解设计模式原理、应用技巧、强调实战操作,提供代码示例和解决方案,适合有一定编程基础并希望提升设计能力的开发者,帮助读者快速掌握并灵活运用设计模式。 💝💝💝如有需要请大家订阅我的专栏【设计模式】哟!我会定…...

MySQL数据分析进阶(十二)设计数据库——PART4

;※食用指南:文章内容为‘CodeWithMosh’SQL进阶教程系列学习笔记,笔记整理比较粗糙,主要目的自存为主,记录完整的学习过程。(图片超级多,慎看!) 【中字】SQL进阶教程 |…...

在 Spring Boot 中使用桥接模式实现灵活的报表生成服务

在软件开发中,桥接模式是一种结构型设计模式,用于将抽象部分与它的实现部分分离,使得这两部分可以独立变化。这种模式非常适合处理需要灵活配置和扩展的场景,比如报表生成服务。本文将详细介绍如何使用桥接模式来实现一个灵活的报…...

算法:外卖调度

题目 有N个餐厅和M个外卖员,每个餐厅在某个时间点会产生一个外卖订单,这些订单都有产生时间、所需送达时间和优先级。外卖员在空闲时会选择最优先的订单来配送,直到所有订单都被送达。具体规则如下: 对于每个餐厅的订单,优先级高…...

leetcode50. Pow(x, n),快速幂算法

leetcode50. Pow(x, n),快速幂算法 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000 示例 2: 输入&#xff…...

Xinstall神器来袭,轻松搞定CPA推广渠道统计!

在数字化营销日益盛行的今天,CPA(按行动付费)推广已成为众多企业营销的重要手段。然而,随着渠道流量和获客途径的不断变化,CPA推广渠道统计的痛点也日益凸显。别担心,Xinstall来帮你解决问题! …...

011 | efinance分析豆一主连期货

👉👉👉 《玩转Python金融量化专栏》👈👈👈 订阅本专栏的可以下载对应的代码和数据集 🚀 上一篇🌟 下一篇⬅️ 010 东方财富帖子标题情绪分析012 akshare分析NYBOT棉花历史数据 ➡️豆一主连期货(通常简称“豆一”)是指中国期货市场上以大豆为标的的期货合约…...

【Python】函数入门(下)

3))* ** ​​​​​​注意:也遵循位置传参在前面,按关键字传参在后面。 代码示例: def func(*args,**kwargs):print(args,kwargs) 该函数中的参数会自动根据传参的方式不同(即:按位置…...

git的基本概念和使用原理

Git是一个分布式版本控制系统,用于跟踪文件的更改并协调多个开发人员之间的工作。以下是Git的基本概念和使用原理及方式: 目录 基本概念 使用原理 基本操作示例 基本概念 版本库(Repository): 版本库是Git用来保存…...

手写简化版的vue-router

vue-router作为vue全家桶之一的重要插件,有必要去深究一下,今天我们就从0到1手写一个简化版本。 开始之前,我们使用路由插件时是先进行下载路由 npm i vue-router ,然后在main.js中使用app.use导入router插件。想要手写vue-rou…...

分享一个基于uni-app的蛋糕商城订购小程序的设计与实现(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…...

Python绘图入门:使用Matplotlib绘制柱状图

Python绘图入门:使用Matplotlib绘制柱状图 柱状图是一种常见的数据可视化方式,能够直观地展示不同类别之间的数据差异。在Python中,Matplotlib是一个非常强大且灵活的绘图库,它不仅能绘制简单的图表,还能创建复杂的多…...

Qt5编译qmqtt库使用MQTT协议连接华为云IOT完成数据上传与交互

一、前言 随着物联网技术的发展,越来越多的设备通过网络互相连接,形成了庞大的智能系统。这些系统能够收集、分析并响应各种数据,从而实现自动化控制和智能化管理。在这个背景下,MQTT 成为了一个广泛使用的轻量级消息传输协议,特别适用于资源受限的环境,如移动应用或远程…...

mysql速起架子

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz 下载mysql tar xvJf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz 解压 mv mysql-8.0.21-linux-glibc2.12-x86_64 mysql-8.0 改名 去到bin目录 cd bin mkdir data gr…...

云动态摘要 2024-08-14

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 注册阿里云免费领云服务器_云服务器ECS_阿里云 阿里云 2024-08-14 云上试用新玩法,个人享300元免费额度,企业享660元免费额度,多种规格随心试 [免费体验…...

Elasticsearch 桶(Bucket)聚合详解及示例

在 Elasticsearch 中,桶(Bucket)聚合是一种强大的工具,它允许我们对数据进行分组并统计每组的数量。这种聚合类型对于理解数据的分布和进行分组统计非常有用。本文将详细介绍 Elasticsearch 的桶聚合,并提供完整的示例…...

Django基础知识

文章目录 新建Django项目helloworld关联数据库admin 新建Django项目 创建django-admin startproject project_name 运行 python manage.py runserver 创建app: python manage.py startapp app_name 目录: 配置文件 settings.py 路由配置 urls.py 项目管理 manage.p…...

使用 nginx 搭建代理服务器(正向代理 https 网站)指南

简介 正向代理 简介 在企业开发环境中,局域网内的设备通常需要通过正向代理服务器访问互联网。正向代理服务器充当中介,帮助客户端请求外部资源并返回结果。局域网内也就是俗称的内网,局域网外的互联网就是外网,在一些特殊场景内…...

深入解析亚马逊数据采集工具选择:Data API/Scrape API/Pangolin采集器

引言 在当今电商领域,亚马逊已成为全球最大的在线零售平台之一。随着竞争的加剧和市场的多样化,商家和企业不仅需要优秀的产品和服务,还需要通过深入的数据分析来制定更加精准的市场策略。因此,采集亚马逊站点数据已成为企业实现…...

探索Linux多样性:主流发行版及其应用场景

目录 引言 Debian:稳定性的标杆 Ubuntu:易用性的代表 Red Hat Enterprise Linux (RHEL):企业的首选 Fedora:创新的前沿 CentOS:开源的稳定之选 Arch Linux:高级用户的定制天堂 Gentoo:性…...

CentOS7.6 HAproxy-7层负载均衡集群——实施方案

目录 1、前期环境准备 1.准备4台主机 1. 设置主机名 2. 设置IP地址然后重启网卡 3. 关闭防火墙和selinux 4. 全部的服务器完成时间统一 二、配置haproxy(192.168.200.11)服务器 1. 安装haproxy 2. haproxy 配置中分成五部分内容 3. 配置HAproxy(192.168.2…...

升级ubuntu22.10到24.04

将所有kinetic换成noble,noble是24.04源,sed或手动改。 cd /etc/aptgrep -nr kinetic将old-releases.ubuntu.com替换成国内的地址,因为2210国内源没找到,没有了,但是现在更新到24.04,国内是有的。 apt up…...

YOLO好像也没那么难?

“学YOLO的念头是想整个游戏外挂!” 目录 基本原理 模型推理 IOU交并比 NMS非极大值抑制 模型训练 损失函数LOSS 代码实现 YOLO学习渠道 基本原理 模型推理 学习一个新的神经网络结构,作者认为整明白输入和输出是怎么回事就OK了,至于…...

html编写贪吃蛇页面小游戏(可以玩)

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>贪吃蛇小游戏</title><style>body {…...

【淘宝购买的源码靠谱吗】

文章目录 前言一、项目需求二、卖家评价三、价格质量四、源码细节五、技术支持六、合法性七、市场环境八、风险评估总结 前言 在淘宝上购买的源码质量和可靠性存在不确定性。淘宝作为一个综合性电商平台&#xff0c;提供了各种各样的商品和服务&#xff0c;包括源代码。然而&a…...

C++ | list

前言 本篇博客讲解cSTL中的list &#x1f493; 个人主页&#xff1a;普通young man-CSDN博客 ⏩ 文章专栏&#xff1a;C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&…...

Vue3 v-bind 指令用法

在 Vue 3 中&#xff0c;v-bind 指令用于将表达式的值绑定到 DOM 元素的属性上。这个指令的语法与 Vue 2 相同&#xff0c;但有一些细微的变化和改进。 以下是 Vue 3 中 v-bind 指令的基本用法&#xff1a; 基本用法: <button v-bind:class"{ active: isActive }"…...

通过Go示例理解函数式编程思维

一个孩子要尝试10次、20次才肯接受一种新的食物&#xff0c;我们接受一种新的范式&#xff0c;大概不会比这个简单。-- 郭晓刚 《函数式编程思维》译者 函数式编程(Functional Programming, 简称fp)是一种编程范式&#xff0c;与命令式编程(Imperative Programming)、面向对象编…...