Python mysql에서 천만 개의 대량의 데이터를 대량으로 삭제하는 스크립트 공유
온라인 mysql 데이터베이스에 매일 통계 결과가 저장되어 있고 매일 1천여만 개가 있습니다. 이것은 우리가 예상하지 못한 것입니다. 통계 결과가 왜 이렇게 많습니까?운비가 찾아와 보니 디스크가 200G를 차지했고 마지막으로 운영에 대해 물었다. 최근 3일간의 데이터만 보존할 수 있고 앞의 데이터는 삭제할 수밖에 없었다.지우다
이것은 온라인 데이터베이스이기 때문에 안에 많은 다른 데이터 테이블이 저장되어 있기 때문에 이 테이블의 데이터를 직접 삭제하면 안 되고 다른 테이블에 영향을 미칠 수 있다.매번 하루만 데이터를 삭제하려고 해도 렉이 걸려요. 어쩔 수 없어요. 파이썬 스크립트를 써서 대량으로 삭제하세요.
구체적인 사고방식은 다음과 같다.
# -*-coding:utf-8 -*-
import sys
# Python Module
sys.path.append('/var/lib/hadoop-hdfs/scripts/python_module2')
import keguang.commons as commons
import keguang.timedef as timedef
import keguang.sql.mysqlclient as mysql
def run(starttime, endtime, regx):
tb_name = 'statistic_ad_image_final_count'
days = timedef.getDays(starttime,endtime,regx)
#
for day in days:
print '%s '%(day)
mclient = getConn()
sql = '''
select 1 from %s where date = '%s' limit 1
'''%(tb_name, day)
print sql
result = mclient.query(sql)
# ,
while result is not ():
sql = 'delete from %s where date = "%s" limit 50000'%(tb_name, day)
print sql
mclient.execute(sql)
sql = '''
select 1 from %s where date = '%s' limit 1
'''%(tb_name, day)
print sql
result = mclient.query(sql)
print '%s '%(day)
mclient.close()
# mysql
def getConn():
return mysql.MysqlClient(host = '0.0.0.0', user = 'test', passwd = 'test', db= 'statistic')
if __name__ == '__main__':
regx = '%Y-%m-%d'
yesday = timedef.getYes(regx, -1)
starttime = '2019-08-17'
endtime ='2019-08-30'
run(starttime, endtime, regx)
이상은Python이 mysql에서 천만 개의 대량의 데이터를 대량으로 삭제하는 스크립트의 상세한 내용입니다. 더 많은python이 MySQL 데이터를 삭제하는 것에 관한 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.