在线教师工程大小查看说明 - 离线版
用于比较在线版导入压缩后的教师工程大小与本地离线版工程 JSON 大小。
一、数据保存位置
在线版教师工程主要保存在 PostgreSQL 数据库:
assignments.project_json:完整教师工程 JSON。assignments.questions_json:题目数据兼容字段。
二、查看最近任务工程大小
cd /var/www/quiz
sudo -u postgres psql -d quiz -c "
SELECT
id,
title,
created_at,
pg_size_pretty(pg_column_size(project_json)::bigint) AS db_size,
pg_size_pretty(octet_length(project_json::text)::bigint) AS text_size,
((length(project_json::text) - length(replace(project_json::text, 'data:image', ''))) / length('data:image')) AS image_count
FROM assignments
ORDER BY id DESC
LIMIT 30;
"
db_size:数据库内部存储大小。text_size:导出为 JSON 文本后的大小,更适合和本地 JSON 文件比较。image_count:工程内嵌图片数量估算。
三、按大小排序找大工程
sudo -u postgres psql -d quiz -c " SELECT id, title, created_at, pg_size_pretty(pg_column_size(project_json)::bigint) AS db_size, pg_size_pretty(octet_length(project_json::text)::bigint) AS text_size FROM assignments ORDER BY pg_column_size(project_json) DESC LIMIT 20; "
四、查看所有在线工程总大小
sudo -u postgres psql -d quiz -c " SELECT COUNT(*) AS assignment_count, pg_size_pretty(SUM(pg_column_size(project_json))::bigint) AS total_project_json_db_size, pg_size_pretty(SUM(octet_length(project_json::text))::bigint) AS total_project_json_text_size, pg_size_pretty(SUM(pg_column_size(questions_json))::bigint) AS total_questions_json_db_size FROM assignments; "
五、导出某个在线工程 JSON 文件
例如导出任务 66:
sudo -u postgres psql -d quiz -Atc "SELECT project_json::text FROM assignments WHERE id=66;" > /tmp/assignment_66_project.json ls -lh /tmp/assignment_66_project.json wc -c /tmp/assignment_66_project.json
如需压缩后比较:
gzip -c /tmp/assignment_66_project.json > /tmp/assignment_66_project.json.gz ls -lh /tmp/assignment_66_project.json /tmp/assignment_66_project.json.gz
六、查看 API 实际返回大小
curl -s -o /tmp/assignment_66_api.json -w "download_size_bytes=%{size_download}\n" "http://127.0.0.1:3000/api/assignments/66"
ls -lh /tmp/assignment_66_api.json
wc -c /tmp/assignment_66_api.json
这个大小更接近浏览器实际拿到的数据量。
七、建议比较方法
- 记录本地离线版原始 JSON 文件大小。
- 导入在线版发布任务。
- 用上面的 SQL 查看
text_size。 - 导出在线
project_json到临时 JSON 文件。 - 对比本地原始 JSON、在线导出 JSON、gzip 后大小。