继续优化数据库
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from flask import Blueprint, jsonify, request
|
||||
from lib.db import execute_query, execute_update
|
||||
from lib.doris_optimize import get_pool, optimize_doris_table, get_doris_table_stats
|
||||
import json
|
||||
|
||||
global_config_api = Blueprint('global_config_api', __name__)
|
||||
@@ -33,4 +34,66 @@ def save_sum_data_fields():
|
||||
|
||||
return jsonify({'success': True, 'message': '配置保存成功'})
|
||||
except Exception as e:
|
||||
return jsonify({'success': False, 'message': str(e)}), 500
|
||||
return jsonify({'success': False, 'message': str(e)}), 500
|
||||
|
||||
|
||||
# ==================== Doris 优化接口 ====================
|
||||
|
||||
@global_config_api.route('/api/doris/status', methods=['GET'])
|
||||
def get_doris_status():
|
||||
"""获取 Doris 连接池状态"""
|
||||
try:
|
||||
pool = get_pool()
|
||||
stats = pool.get_stats()
|
||||
return jsonify({'success': True, 'data': stats})
|
||||
except Exception as e:
|
||||
return jsonify({'success': False, 'message': str(e)}), 500
|
||||
|
||||
|
||||
@global_config_api.route('/api/doris/optimize-table', methods=['POST'])
|
||||
def api_optimize_table():
|
||||
"""优化 Doris 表统计信息"""
|
||||
try:
|
||||
data = request.get_json()
|
||||
table_name = data.get('table_name', '')
|
||||
|
||||
if not table_name:
|
||||
return jsonify({'success': False, 'message': '请提供表名'}), 400
|
||||
|
||||
result = optimize_doris_table(table_name)
|
||||
if result:
|
||||
return jsonify({'success': True, 'message': f'表 {table_name} 优化成功'})
|
||||
else:
|
||||
return jsonify({'success': False, 'message': f'表 {table_name} 优化失败'})
|
||||
except Exception as e:
|
||||
return jsonify({'success': False, 'message': str(e)}), 500
|
||||
|
||||
|
||||
@global_config_api.route('/api/doris/table-stats', methods=['GET'])
|
||||
def api_get_table_stats():
|
||||
"""获取 Doris 表统计信息"""
|
||||
try:
|
||||
table_name = request.args.get('table_name', 't_daily_report_sum_data')
|
||||
stats = get_doris_table_stats(table_name)
|
||||
return jsonify({'success': True, 'data': stats})
|
||||
except Exception as e:
|
||||
return jsonify({'success': False, 'message': str(e)}), 500
|
||||
|
||||
|
||||
@global_config_api.route('/api/doris/health-check', methods=['GET'])
|
||||
def doris_health_check():
|
||||
"""Doris 健康检查"""
|
||||
try:
|
||||
# 简单查询测试连接
|
||||
result = execute_query('SELECT 1 as test')
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'status': 'healthy',
|
||||
'test_query': result
|
||||
})
|
||||
except Exception as e:
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'status': 'unhealthy',
|
||||
'message': str(e)
|
||||
}), 500
|
||||
@@ -51,7 +51,11 @@ def list_sum_data():
|
||||
config_name = request.args.get('config_name')
|
||||
sum_field_key = request.args.get('sum_field_key')
|
||||
data_source = request.args.get('data_source')
|
||||
log_info(f'[求和数据API] 查询求和数据列表,page={page}, page_size={page_size}', 'api')
|
||||
|
||||
# 当 page_size 较大时(>=1000),跳过 COUNT 查询以优化性能
|
||||
skip_count = page_size >= 1000
|
||||
|
||||
log_info(f'[求和数据API] 查询求和数据列表,page={page}, page_size={page_size}, skip_count={skip_count}', 'api')
|
||||
|
||||
result = get_sum_data_list(
|
||||
page=page,
|
||||
@@ -61,11 +65,12 @@ def list_sum_data():
|
||||
config_id=config_id,
|
||||
config_name=config_name,
|
||||
sum_field_key=sum_field_key,
|
||||
data_source=data_source
|
||||
data_source=data_source,
|
||||
skip_count=skip_count
|
||||
)
|
||||
|
||||
if result['success']:
|
||||
log_info(f'[求和数据API] 查询成功,共{result["data"]["total"]}条记录', 'api')
|
||||
log_info(f'[求和数据API] 查询成功,共{len(result["data"]["list"])}条记录', 'api')
|
||||
return jsonify(result)
|
||||
else:
|
||||
return jsonify(result), 400
|
||||
|
||||
Reference in New Issue
Block a user