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

查看wordpress使用什么主题杭州网站优化咨询

查看wordpress使用什么主题,杭州网站优化咨询,做的网站老被攻击,江苏网站关键词优化优化背景 本司在用Starrocks做一些业务上的分析的时候,用到了物化视图,并且在高QPS的情况下,RT也没有很大的波动,所以在此研究一下Starrock的实现,以及在刷新的时候是不是原子性的 本文基于Starrocks 3.3.5 结论 Starro…

背景

本司在用Starrocks做一些业务上的分析的时候,用到了物化视图,并且在高QPS的情况下,RT也没有很大的波动,所以在此研究一下Starrock的实现,以及在刷新的时候是不是原子性的
本文基于Starrocks 3.3.5

结论

Starrocks的物化视图的更新是通过Insert Overwrite的方式实现的,在执行该SQL期间,会新建临时分区并进行替换,最后在替换分区的时候,会进行表加锁操作,所以说物化视图不存在读不到数据的情况。

分析

这里我们只关心主流程,其他的细节直接跳过

物化视图的创建

直接到 Starrocks.g4

createMaterializedViewStatement

这里会用 AstBuilder.visitCreateMaterializedViewStatement 生成 CreateMaterializedViewStatementMaterializedViewAnalyzer.visitCreateMaterializedViewStatement 方法进行物化视图的解析,主要是解析里面的SQL,并生成物理计划,
之后再走到StmtExecutor.handleDdlStmt 方法:

    private void handleDdlStmt() throws DdlException {try {ShowResultSet resultSet = DDLStmtExecutor.execute(parsedStmt, context);if (resultSet == null) {context.getState().setOk();} else {

最后会走到LoaclMetaStore.createMaterializedView方法:

 @Overridepublic void createMaterializedView(CreateMaterializedViewStatement stmt)throws DdlException {// check mv exists,name must be different from view/mv/table which exists in metadataString mvName = stmt.getTableName().getTbl();String dbName = stmt.getTableName().getDb();。。。createTaskForMaterializedView(dbName, materializedView, optHints);

这个createTaskForMaterializedView方法

  • 有个Task task = TaskBuilder.buildMvTask(materializedView, dbName);方法:
 public static Task buildMvTask(MaterializedView materializedView, String dbName) {Task task = new Task(getMvTaskName(materializedView.getId()));...task.setDefinition(materializedView.getTaskDefinition());task.setPostRun(getAnalyzeMVStmt(materializedView.getName()));task.setExpireTime(0L);if (ConnectContext.get() != null) {task.setCreateUser(ConnectContext.get().getCurrentUserIdentity().getUser());task.setUserIdentity(ConnectContext.get().getCurrentUserIdentity());}handleSpecialTaskProperties(task);return task;}

其中 materializedView.getTaskDefinition 代码如下:

    public String getTaskDefinition() {return String.format("insert overwrite `%s` %s", getName(), getViewDefineSql());}

可以看到这里是insert overwrite的方式.

  • 与此同时,createTaskForMaterializedView还调用TaskManager.createTask方法用来周期性的调度任务

物化视图的执行

上面看到物化视图的执行是通过Insert overwrite的方式实现的,所以
直接找到Starrocks.g4:

insertStatement

通过AstBuilder.visitInsertStatement解析,解析为InsertStmt,最后会转到StmtExecutor.handleDMLStmtWithProfile:

handleDMLStmt||\/
handleInsertOverwrite||\/
InsertOverwriteJobMgr.executeJob||\/
InsertOverwriteJobRunner.run()||\/
InsertOverwriteJobRunner.doLoad()

InsertOverwriteJobRunner.doLoad() 方法如下:

        Preconditions.checkState(job.getJobState() == InsertOverwriteJobState.OVERWRITE_RUNNING);createTempPartitions();prepareInsert();executeInsert();doCommit(false);transferTo(InsertOverwriteJobState.OVERWRITE_SUCCESS);
  • createTempPartitions(); 这个主要创建临时分区。
  • prepareInsert/executeInsert 这里主要是进行临时分区的数据写入
  • doCommit 这会进行分区的替换
         Locker locker = new Locker();if (!locker.lockDatabaseAndCheckExist(db, tableId, LockType.WRITE)) {throw new DmlException("insert overwrite commit failed because locking db:%s failed", dbId);}...targetTable.replacePartition(sourcePartitionNames.get(0), tmpPartitionNames.get(0));...} finally {locker.unLockDatabase(db, tableId, LockType.WRITE);}
    
    不同于之前的数据写入操作,这里会进行锁表的操作,也就是在这期间读写是有互斥的,并且这里面分区(非分区表其实也是有单个分区的存在)的替换都是内存操作,所以会很快。

所以从实现来说,insert overwrite在执行阶段是互斥的,并且只有在元数据操纵期间才会加锁,数据写入阶段是不会加锁的,所以速度是很快的。

http://www.dtcms.com/wzjs/371369.html

相关文章:

  • 有那个网站可以做免费的投票哈市今日头条最新
  • 大连领超科技网站建设有限公司十个有创意的线上活动
  • 做任务刷王者皮肤网站常用搜索引擎有哪些
  • 班级网站布局百度快速查询
  • 低价网站建设扬州重庆做seo外包的
  • 鄢陵县北京网站建设武汉seo 网络推广
  • 网上开店的货源渠道有哪些小红书seo是什么
  • 怎么做简单的网站上饶seo博客
  • 南京学习网站建设appstore关键词优化
  • ps怎么做华为网站界面天津放心站内优化seo
  • 做国外的营销的网站百度官网登录入口手机版
  • 网站建设公司圣辉友联各大免费推广网站
  • 建设工程资料网站百度实名认证
  • 青海网站建设加拿大搜索引擎
  • 淄博网站制作培训今日重庆重要消息
  • 一学一做腾讯视频网站吗银川网站seo
  • 如何购买域名建网站今日财经最新消息
  • 网站开发私活分成青岛网站开发公司
  • 做响应式的网站有哪些武汉网站设计
  • 贵州省住房和城乡建设厅查询网站网络营销专业就业公司
  • 知名网建公司seo查询外链
  • 网站的交互性友情链接只有链接
  • dedecms医院网站wap模板(橙色)百度账户登录
  • 蚌埠网站制作哪里有营销案例
  • 宜春市政府网站建设找平台推广
  • dedecms部署两个网站搜索引擎优化的基本内容
  • wordpress 引入样式百度关键词优化点击 教程
  • 做网站合同范本谷歌推广费用多少
  • 建设行政管理部门网站外包公司什么意思
  • 做网站怎么开发客户搜狗收录批量查询