首页 > 系统相关 >python 处理异步物化视图同时执行导致内存溢出问题

python 处理异步物化视图同时执行导致内存溢出问题

时间:2023-10-18 10:23:06浏览次数:41  
标签:异步 starrocks python sqlserver 视图 cursor conn row

python 处理异步物化视图同时执行导致内存溢出问题 一、前提:因为物化视图过多,同时物化视图到时间同时爆发,导致CPU爆满,所以采用datax自带的调度服务来执行python命令 二、直接看代码:

import pymysql
import pymssql
import datetime
import time
class Materialized_plan:
    def connect_to_starrock(self):
        username = '用户名'
        password = '密码'
        myhost = '服务器'
        port = '9031'
        databasename='库名'
        conn = pymysql.connect(
            host=myhost,
            port=int(port),
            user=username,
            password=password,
            database=databasename
        )
        return conn
    def connect_to_sqlserver(self):
        username = '用户名'
        password = 'eIzo48Z8nh96VuaL0tt3EWDD7'
        myhost = '服务器'
        port = '1433'
        databasename='库名'
        conn = pymssql.connect(server=myhost, user=username, database=databasename,password=password, port=port, charset='utf8')
        return conn
    def GetplanData(self):
        sqlser_conn= self.connect_to_sqlserver()
        selectSql='select * from starrocks_materialized_plan where UpdateTime< CONVERT(date, GETDATE()) order by level'
        cursor = sqlser_conn.cursor()
        cursor.execute(selectSql,('成功'))
        datas = cursor.fetchall()
        print(datas)
        return datas
    def RunPlan(self):
        datas= self.GetplanData()
        for row in datas:
            nowdate=datetime.datetime.now()
            runsql='REFRESH MATERIALIZED VIEW '+row[1]+'.'+row[2]
            starrocks_conn= self.connect_to_starrock()
            cursor = starrocks_conn.cursor()
            try:
                cursor.execute(runsql)
                starrocks_conn.commit()
                print("刷新物化视图成功:"+ runsql)
                # 开始更新数据
                pdate_query = "UPDATE starrocks_materialized_plan SET SuccessOrNot = %s, UpdateTime = %s WHERE id = %s;INSERT INTO [dbo].[starrocks_materialized_plan_log]([PlanId], [ExecutionTime], [Message]) VALUES (%s, %s, %s);"
                sqlserver_conn = self.connect_to_sqlserver()
                sqlserver_cursor = sqlserver_conn.cursor()
                sqlserver_cursor.execute(pdate_query, ('成功', nowdate, row[0], row[0], nowdate, '成功'))
                sqlserver_conn.commit()
                # 完成以后等待指定秒钟
                print(str(row[11])+"秒钟以后继续执行")
                time.sleep(int(row[11]))
            except Exception as e:
                starrocks_conn.rollback()
                print("刷新物化视图失败:", runsql)
                print("错误信息:", e)
                #开始更新数据
                pdate_query = "UPDATE starrocks_materialized_plan SET SuccessOrNot = %s, UpdateTime = %s WHERE id = %s;INSERT INTO [dbo].[starrocks_materialized_plan_log]([PlanId], [ExecutionTime], [Message]) VALUES (%s, %s, %s);"
                sqlserver_conn = self.connect_to_sqlserver()
                sqlserver_cursor = sqlserver_conn.cursor()
                sqlserver_cursor.execute(pdate_query, ('失败', nowdate, row[0], row[0], nowdate, '失败'))
                sqlserver_conn.commit()
            # result= cursor.execute(runsql)
            # print(result.status)
            # print(result.data)
if __name__ == '__main__':
    print('开始执行物化视图循环')
    # time.sleep(10)
    m = Materialized_plan()  # 首先创建Product_Base的实例
    m.RunPlan() 
    print('执行物化视图结束')

相关表:

1. 主表

 2. 日志表:主要是用来记录每天的执行情况

 谢谢学习!!!

标签:异步,starrocks,python,sqlserver,视图,cursor,conn,row
From: https://www.cnblogs.com/wangjinya/p/17771459.html

相关文章

  • python 操作向量数据库qdrant
    qdrant官网:https://qdrant.tech/documentation/overview/两个步骤:1、文本进行向量化2、连接qdrant进行存储步骤一:文本向量化文本向量化可以借助很多现有模型,个人使用bge-large-zhfromsentence_transformersimportSentenceTransformer#模型已下载到本地MODELBGE=Sen......
  • 【Python入门教程】CV2报错:cv2.error: OpenCV(4.7.0) D:\a\opencv-python\opencv-p
    ​     OpenCV作为一个强大计算机视觉库被各个领域广泛应用,今天分享下自己编程遇到的报错信息以及解决办法。1报错信息​[WARN:[email protected]]globalgrfmt_tiff.cpp:716cv::TiffDecoder::readDataOpenCVTIFF:TIFFRGBAImageOK:Sorry,cannothandleimageswith6......
  • 【2023最新教程】超详细!!!Python保姆式安装Python环境配置蓝奏云资源
    目录1Python简介2Python下载2.1Python3.10.11蓝奏云资源安装包3Python安装3.1验证环境是否配置完成4Python环境配置1Python简介python有两个版本,python2.X和python3,我们现在用的全部都是python3版本python的内置库是最厉害,所以python可以在多领域展开,让你用做少的......
  • python 颜色 调色板 RGB 代码 调色板 网站
    #定义可用的颜色#colors=['red','blue','green','yellow','Orchid','purple','cyan','black',#'LightPink','Violet','Indigo','Ligh......
  • Python 密码本和电子钥匙
    二分查找a=[1,3,5,7,9]#序列k=3#目标l=0#开头(注意,是索引号)r=4#结尾(注意,是索引号)whilel+1!=r:#是否只剩一个mid=int((l+r)//2)#中间(注意,是索引号)ifa[mid]<k:#小于目标l=mid#结尾移到中间位置上(往大走)elifa[mid]>k:#大......
  • Python 五级编程题
    python_五级_中国电子学会_2021年_真题_汉诺塔汉诺塔是一道非常经典的题,12月5日悦儿姐在考python五级时又遇见它了,在这里给大家分享一下。题目:设计一个算法,汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按......
  • python报错解决-ValueError: Trusted host URL must include a host part: '#!
    删掉#后面的字符参考:pipinstall总是报错:ValueError:TrustedhostURLmustincludeahostpart:‘#‘-CSDN博客......
  • python12
    1.列表(list)列表是一个有序且可变的容器,在里面可存放多个类型的元素。1.1定义use_list=["天","地","人"]number_list=[98,66,55]data_list=[1,True,"Alex"]use_list=[]use_list.append("铁锤")use_list.append(123)use_list.append(True)p......
  • # yyds干货盘点 # Python自动化办公之PDF版本发票识别并提取关键信息实战教程(上篇)
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公发票数据处理的问题,一起来看看吧。二、实现过程这个问题在实际工作中还是非常常见的,实用性和通用性都比较强,历史文章中其实也有写过几篇文章,这里继续给大家敲敲脑壳。不过这里还涉及到一个......
  • 代码随想训练营第四天(Python)| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点
    两两交换链表中的节点关键点:涉及到头节点变动的都使用虚拟节点。画图找出交换节点指向的顺序和退出循环的条件。1、迭代法classSolution:defswapPairs(self,head:Optional[ListNode])->Optional[ListNode]:dummy_node=ListNode(next=head)cur=......