云服务器内容精选
-
建表规范 【强制】创建表指定分桶buckets时,每个桶的数据大小为应保持在100M-3G之间,单分区中最大分桶数据不超过5000。 【强制】表数据超过5亿条以上必须设置分区分桶策略。 【强制】分桶的列不要设置太多,一般情况下1或2个列,同时需要兼顾数据分布均匀和查询吞吐之间的均衡,考虑数据均匀是为了避免某些桶的数据存在倾斜影响数据均衡和查询效率,考虑查询吞吐是为了利用查询SQL的分桶剪裁优化避免全桶扫描提升查询性能,所以优先考虑那些数据较为均匀且常用于查询条件的列适合做分桶列。 【强制】2000kw 以内数据禁止使用动态分区(动态分区会自动创建分区,而小表用户客户关注不到,会创建出大量不使用分区分桶)。 【强制】创建表时的副本数必须至少为2,默认是3,禁止使用单副本。 【建议】单表物化视图不能超过6个。 【建议】对于有大量历史分区数据,但是历史数据比较少,或者不均衡,或者查询概率的情况,使用如下方式将数据放在特殊分区: 对于历史数据,如果数据量比较小我们可以创建历史分区(比如年分区,月分区),将所有历史数据放到对应分区里。 创建历史分区方式:FROM ("2000-01-01") TO ("2022-01-01") INTERVAL 1 YEAR。 【建议】1000w-2亿以内数据为了方便可以不设置分区,直接用分桶策略(不设置其实Doris内部会有个默认分区)。 【建议】如果分桶字段存在30%以上的数据倾斜,则禁止使用Hash分桶策略,改使用random分桶策略:Create table ... DISTRIBUTED BY RANDOM BUCKETS 10 ... 【建议】建表时第一个字段一定是最常查询使用的列,默认有前缀索引快速查询能力,选取分区分桶外最长查询且高基数的列,前缀索引36位,如果列超长也不能使用前缀索引能力。 【建议】亿级别以上数据,如果有模糊匹配或者等值/in条件,可以使用倒排索引或者是 Bloomfilter。如果是低基数列的正交查询适合使用bitmap索引。 【强制】Doris 建表不要指定Merge-On-Write属性,当前有很多开源问题,不推荐。如使用了该属性,CloudTable服务不承诺SLA。
-
数据查询规范 【强制】in中条件超过2000后,必须修改为子查询。 【强制】禁止使用REST API(Statement Execution Action)执行大量SQL查询,该接口仅仅用于集群维护。 【建议】一次insert into select数据超过1亿条后,建议拆分为多个insert into select语句执行,分成多个批次来执行。如果非要这样执行不可,必须在集群资源相对空闲的时候可以通过调整并发度来加快的数据导入速度 。 例如:set parallel_fragment_exec_instance_num = 8 建议数值是单BE节点上CPU内核的一半。 【强制】query查询条件返回结果在5w条以上,使用JDBC Catalog或者OUTFILE方式导出。不然大量FE上数据传输将占用FE资源,影响集群稳定性。 如果你是交互式查询,建议使用分页方式(offset limit),分页要加Order by。 如果是数据导出提供给第三方使用,建议使用 outfile或者export 方式。 【强制】2个以上大于3亿的表JOIN使用Colocation Join。 【强制】亿级别大表禁止使用select * 查询,查询时需要明确要查询的字段。 使用SQL Block方式禁止这种操作。 如果是高并发点查,建议开启行存(2.x版本)。 使用PreparedStatement查询。 【强制】亿级以上表数据查询必须带分区分桶条件。 【建议】尽量不要使用OR作为JOIN条件。 【建议】大量数据排序(5亿以上)后返回部分数据,建议先减少数据范围再执行排序,否则大量排序会影响性能。 例如:将from table order by datatime desc limit 10优化为from table where datatime='2023-10-20' order by datatime desc limit 10。
-
数据变更类 【强制】应用程序不可以直接使用delete后者update语句变更数据,可以使用CDC的upsert方式来实现。 低频操作上使用,比如Update几分钟更新一次。 如果使用Delete一定带上分区条件。 【强制】禁止使用INSERT INTO tbl1 VALUES (“1”), (“a”);这种方式做数据导入,少量少次写可以,多量多频次时要使用Doris提供的StreamLoad、BrokerLoad、SparkLoad或者Flink Connector方式。 【建议】执行特殊的长SQL操作时,可以使用SELECT /*+ SET_VAR(query_timeout = xxx*/ from table 类似这样通过Hint方式去设置Session 会话变量,不要设置全局的系统变量。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格