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

网站一键制作麻阳建设局网站

网站一键制作,麻阳建设局网站,做网络营销策划的目的是,优化落实防控措施背景 在前文Starrocks 写入报错 primary key memory usage exceeds the limit中,可以通过ALTER TABLE xxxx DISTRIBUTED BY HASH(xx) BUCKETS 50;来改变数据的分布状态,具体的执行过程是怎么样的呢? 分析 首先对应的g4文件中为 alterTableStatement &…

背景

在前文Starrocks 写入报错 primary key memory usage exceeds the limit中,可以通过ALTER TABLE xxxx DISTRIBUTED BY HASH(xx) BUCKETS 50;来改变数据的分布状态,具体的执行过程是怎么样的呢?

分析

首先对应的g4文件中为 alterTableStatement ,这里最终的调用是 AlterJobExecutor.visitAlterTableStatement:

if (statement.hasSchemaChangeOp()) {Locker locker = new Locker();locker.lockTableWithIntensiveDbLock(db, table.getId(), LockType.WRITE);try {SchemaChangeHandler schemaChangeHandler = GlobalStateMgr.getCurrentState().getSchemaChangeHandler();assert table instanceof OlapTable;schemaChangeHandler.process(statement.getAlterClauseList(), db, (OlapTable) table);} catch (UserException e) {throw new AlterJobException(e.getMessage());} finally {locker.unLockTableWithIntensiveDbLock(db, table, LockType.WRITE);}isSynchronous = false;

schemaChangeHandler.process会创建OptimizeJobV2 实例去优化对象,数据链路如下:

SchemaChangeHandler.process||\/
analyzeAndCreateJob||\/
createOptimizeTableJob||\/
OptimizeJobV2Builder.build()||\/
new OptimizeJobV2()

SchemaChangeHandler.process 会把当前的OptimizeJobV2 job 放入要执行的队列中,之后SchemaChangeHandler 以 alter_scheduler_interval_millisecond (10000ms)的轮询间隔从队列中取出要执行的任务,并调用run方法.run方法如下:

public synchronized void run() {if (isTimeout()) {cancelImpl("Timeout");return;}// create connectcontextcreateConnectContextIfNeeded();try {while (true) {JobState prevState = jobState;switch (prevState) {case PENDING:runPendingJob();break;case WAITING_TXN:runWaitingTxnJob();break;case RUNNING:runRunningJob();break;case FINISHED_REWRITING:runFinishedRewritingJob();break;default:break;}if (jobState == prevState) {break;} // else: handle the new state}} catch (AlterCancelException e) {cancelImpl(e.getMessage());}}
  • PENDING
    创建完任务初始状态就是PENDING,所以调用 runPendingJob() 方法,这里有几个关键点是
  1. 创建该Alter语句涉及到的所有的分区
  2. 检查改任务所涉及到表的状态,必须该表的tablet都为健康状态才可以进行下一步,否则设置该表的状态为WAITING_STABLE,并直接跳过该任务
  3. 会获取到在一个事务的ID
  4. 改变该作业的状态为WAITING_TXN
  • WAITING_TXN
    如果任务所涉到的表为正常状态,则会进入runWaitingTxnJob()方法,这里的几个关键点是
  1. 会等待在该任务对应的事务之前的事务都运行完才会执行该任务
  2. 每个分区建立一个任务,并把分区写入一个临时分区中
  3. 改变该作业的状态为RUNNING
  • RUNNING
    如果任务正常运行的话,则会进入runRunningJob()方法,这里的几个关键点是
  1. 等待所有的写入临时分区的任务完成
  2. 锁住该表所在库以及该表,并且是排他锁,所以读取该库的操作也是不可行的
  3. 替换临时分区到对应的分区上去
  4. 改变该作业的状态为FINISHED
http://www.dtcms.com/wzjs/566014.html

相关文章:

  • 网站制作商城国内搜索引擎排行榜
  • 京东网站优化那个网站做图片好看
  • 中企动力做的网站山西太原来年做那些网站能致富
  • 深圳企业网站制作企业wordpress 下载页面模板怎么用
  • 潍坊做网站公司补脾最网站建设规划设计报告
  • wordpress 众筹网站模板教学督导网站建设报告
  • K12网站怎么建设网站开发简单吗
  • 欧美网站风格传奇手游网页版
  • 做网站遇到的困难总结如何给公司网站做优化
  • 杭州教育培训网站建设二级建造师官网查询系统
  • 国外酷网站营口电商平台网站建设
  • 网站开发的毕业设计计算机网络技术就业方向工资
  • 网站规划建设方案数字资产交易网站建设
  • 网站开发 简历海南省住房公积金管理局招聘
  • asp.net开发的网站大型网站建设网站推广
  • 可以做英语题的网站wordpress阿里云图片
  • dedecms更改网站logo深圳品牌展会
  • 温州网站优化排名推广营销网站建设都是专业技术人员吗
  • 百度给做的网站如何登陆网站后台赣州城市资讯
  • 重庆网站平台如何推广微信房地产网站建设
  • 贵金属企业网站源码邢台信息发布平台
  • 网站开发使用的工具类网站开发私单哪里接
  • 网站如何添加百度统计wordpress模板免费下载
  • 城阳区城市规划建设局网站网站制作公司汉狮网络
  • 国内物流公司网站建设阅读网站模板下载
  • 做好公司网站上海 企业
  • 网站企业地图网站被恶意解析
  • 天猫官方网站首页wordpress green
  • 公司网站 数据库建设部网站公告注册成功
  • 医疗器械网站建设策划书wordpress 只看到一个主题