• Hotline: 0989.000.420
  • Giới thiệu
  • Vai trò pn
  • Facbook hội pn
  • Sitemap
SỬA CHỮA ĐỘNG CƠ ĐIỆN YÊN BÁI

Vĩnh Kiên- Yên Bình- Yên Bái 0989 000 420- 038 540 7810

  • Trang chủ
  • Giới thiệu
    • Giới thiệu chung
    • Chức năng nhiệm vụ
    • Cơ cấu tổ chức
    • Các phòng chức năng nghiệp vụ
      • Văn phòng Ban QLDA Đầu tư xây dựng
      • Phòng Tài chính - Kế toán
      • Phòng Kế hoạch tổng hợp
      • Phòng Kỹ thuật - Thẩm định
      • Phòng Điều hành - Dự án
  • Thiết bị điện
  • Hệ thống DCS
    • Thiết kế tủ điện
    • Lập trình PLC
    • Giao diện DCS
    • Chuyển đối số
    • Modbus
    • Hệ thống rơ le bảo vệ
    • Lưới điện
  • Truyền thông công nghiệp
  • Config IEC104 , 61850
    • RS485
    • IEC104
    • IEC61850
    • Vòng quay may mắn
  • Máy điện
  • Góp ý
  • Liên hệ
Học Học Nữa - Học Mãi
Liên hệ quảng cáo
  • Trang chủ
  • python

giảm tải data base

Bởi Operator vào 22 thg 7, 2026
Chia sẻ
  • Sao chép liên kết
  • Chia sẻ với Facebook
  • Chia sẻ với X
  • Chia sẻ với Pinterest
  • Chia sẻ với Linkedin
  • Gửi bài qua Email

gửi email cho tác giả




     tôi làm biên bản. mỗi lần tạo biên bản mới, nhập tiền tố vào. nó làm tăng dung lượng data base không? nếu 100 hoặc 1000 biên bản thì thế nào

    Analyzed dữ liệu biên bản, ước tính dung lượng và đề xuất tối ưu hóa

    Tiền tố (tien_to_truong, ví dụ "TU", "TI"...) tự nó không phải là thứ làm phình database. Nhìn vào code:

    1. Tiền tố chỉ là chuỗi ký tự ngắn dùng làm khóa (key) trong JSON

    python
    key = f"{tien_to}{i}"   # ví dụ: "TU1", "TU2", ..., "TU100"

    Toàn bộ dữ liệu nhập của một biên bản được gộp vào cột du_lieu_nhap (kiểu JSONB). Với so_luong_truong mặc định 100 trường, mỗi trường tên TUx + giá trị nhập vào, cả cột này thường chỉ tốn vài KB/biên bản – không đáng kể dù có 1.000 hay 10.000 bản ghi.

    2. Thứ thực sự làm phình database là 2 cột lưu file nhị phân (LargeBinary):

    python
    file_bien_ban_xuat = db.Column(db.LargeBinary)   # file Word đã render, lưu THẲNG vào Postgres
    file_gcn_xuat = db.Column(db.LargeBinary)        # tương tự, nếu có mẫu GCN

    Mỗi lần tạo/sửa biên bản, hệ thống render lại toàn bộ file .docx từ template rồi lưu nguyên file nhị phân vào 2 cột này (db.session.commit() sau khi doc_bb.save(io_bb)). Đây mới là phần nặng.

    Ước tính dung lượng:

    Kích thước 1 file .docx sau khi render phụ thuộc vào bản mẫu (file_phoi_bien_ban/file_phoi_gcn) – có logo, ảnh, định dạng phức tạp hay không:

    Kích thước mỗi file docx1 biên bản (2 file)100 biên bản1.000 biên bản
    ~50 KB (template đơn giản)~100 KB~10 MB~100 MB
    ~200 KB (có logo/ảnh)~400 KB~40 MB~400 MB
    ~1 MB (nhiều ảnh/scan chèn vào)~2 MB~200 MB~2 GB

    → Nếu template có logo/ảnh, con số này nhân đôi cho mỗi biên bản vì mỗi record lưu bản sao đầy đủ của file docx, không dùng chung tài nguyên với template gốc.

    Ngoài ra file scan PDF (file_pdf_scan) thì không lưu vào DB — chỉ lưu path trên đĩa (UPLOAD_FOLDER), nên phần đó không tính vào dung lượng CSDL.

    Tóm lại: với 100–1.000 biên bản, mức tăng CSDL nằm trong khoảng chục đến vài trăm MB (thậm chí vài GB nếu template có nhiều ảnh) — hoàn toàn do 2 file docx render lưu dạng BLOB, chứ không phải do tiền tố hay dữ liệu JSON nhập vào.

    Nếu bạn lo về việc CSDL phình to, có thể cân nhắc: chuyển file_bien_ban_xuat/file_gcn_xuat ra lưu file trên đĩa (giống cách đang làm với PDF scan) và chỉ lưu đường dẫn trong DB — sẽ nhẹ Postgres hơn nhiều và dễ backup/restore hơn.

    có cách nào giảm dung lượng data base không? khi tôi nhập hồ sơ mới thì hệ thống lưu joson và template có sẵn. chứ không phải ghi luôn file nhập hồ sơ mới

    Phân tích cách loại bỏ cột dữ liệu thừa khỏi cơ sở dữ liệu

    Ý tưởng này rất đúng — và tin tốt là hệ thống đã có sẵn cơ chế render-theo-yêu-cầu ở route tải xuống, chỉ là code hiện tại đang làm dư một bước: vừa render-on-demand khi tải, vừa lưu thêm 1 bản render tĩnh vào DB mà không có route nào đọc lại nó cả. Tôi kiểm tra kỹ thì thấy:

    • /tai-xuong/... → render trực tiếp từ mau.file_phoi_bien_ban (template) + hoso.du_lieu_nhap (JSON) — không dùng file_bien_ban_xuat
    • /ho-so/live-preview/... → cũng render trực tiếp từ template + JSON
    • /ho-so/chi-tiet/... → cũng vậy

    → Cột file_bien_ban_xuat và file_gcn_xuat bị ghi vào nhưng không bao giờ đọc ra để phục vụ người dùng. Đây chính là phần "thừa" đang chiếm dung lượng DB một cách vô ích.

    Cách sửa: bỏ hẳn việc render + lưu file nhị phân ở 4 chỗ sau, chỉ giữ lại du_lieu_nhap (JSON):

    1. luu_ho_so() — khi tạo hồ sơ mới
    2. cap_nhat_chinh_thuc() — khi sửa hồ sơ
    3. cap_nhat_hoan_thanh() — khi tích checkbox hoàn thành
    4. sao_chep_ho_so() — khi copy hồ sơ (đang copy luôn 2 cột binary)

    Tôi làm luôn cho bạn:

    Edited 4 files, ran 2 commands, viewed a file

    Chỉ còn định nghĩa cột trong model — không còn nơi nào ghi vào nữa. Tôi giữ nguyên cột trong model (không xoá) để tránh vỡ những hồ sơ cũ đã có sẵn dữ liệu, và để bạn không cần chạy migration ngay.

    Ran a command, read a file

    Đã sửa ở 4 chỗ: luu_ho_so (tạo mới), cap_nhat_chinh_thuc (sửa), cap_nhat_hoan_thanh (tick checkbox), sao_chep_ho_so (nhân bản) — tất cả giờ chỉ lưu du_lieu_nhap (JSON), không render+lưu file .docx vào DB nữa. Các route hiển thị/tải xuống (/tai-xuong, /ho-so/live-preview, /ho-so/chi-tiet) vẫn hoạt động y hệt vì chúng vốn đã tự render từ template + JSON, không hề đụng tới 2 cột đó.

    Để dọn luôn dung lượng đã chiếm sẵn của các hồ sơ cũ, chạy trong Postgres:

    sql
    UPDATE ho_so_thiet_bi_dong SET file_bien_ban_xuat = NULL, file_gcn_xuat = NULL;
    VACUUM FULL ho_so_thiet_bi_dong;

    (VACUUM FULL sẽ khoá bảng tạm thời — nên chạy lúc ít người dùng.)

    Vài lưu ý cần cân nhắc:

    • File chỉ còn tồn tại "ảo" — sinh ra lúc bấm tải/xem, không lưu bản cứng. Nếu sau này bạn sửa template phôi mẫu (mau.file_phoi_bien_ban), thì các hồ sơ cũ khi tải lại sẽ dùng template mới, không giữ nguyên định dạng lúc tạo ban đầu. Trước đây với cách lưu file tĩnh, hồ sơ cũ luôn giữ đúng bản gốc dù template có đổi. Nếu tính chất pháp lý của biên bản đòi hỏi phải "đóng băng" hình thức tại thời điểm ký/duyệt, đây là điểm cần lưu ý.
    • Việc render tốn thêm chút CPU mỗi lần tải/xem thay vì đọc thẳng từ DB — nhưng docx nhỏ nên gần như không đáng kể.
    App web bien ban
    PY 
    Tính toán dung lượng database cho biên bản JSON, so sánh phương pháp mới

    Với code mới (chỉ lưu JSON, không lưu file docx), dung lượng tăng thêm gần như không đáng kể. Tính cụ thể:

    Mỗi biên bản giờ chỉ còn lưu:

    • Cột du_lieu_nhap (JSONB) — dữ liệu các trường TU1, TU2... TU100 (giả sử mẫu có 100 trường như mặc định so_luong_truong)
    • Vài cột text/số nhỏ khác: ten_ho_so, ngay_tao, nguoi_tao, trang_thai_duyet...

    Ước tính JSONB cho 1 biên bản (100 trường):

    Thành phầnKích thước
    1 key (vd "TU37")~6 byte
    1 giá trị (vd ngày, số seri, tên...)~15–25 byte
    Dấu :, ,, "..." (overhead JSON)~5 byte
    Tổng 1 trường~25–35 byte
    100 trường~2,5 – 3,5 KB

    Cộng thêm các cột phụ (tên hồ sơ, ngày giờ, người tạo...) khoảng 0,3–0,5 KB nữa.

    → Mỗi biên bản mới ≈ 3 – 4 KB

    Bảng tổng hợp:

    Số biên bảnDung lượng tăng thêm (code mới)So với code cũ (có lưu file docx ~100-400KB/bản)
    100~0,3 – 0,4 MBtrước đây ~10–40 MB
    1.000~3 – 4 MBtrước đây ~100–400 MB
    10.000~30 – 40 MBtrước đây ~1–4 GB

    Tức là giảm khoảng 100–1000 lần so với cách lưu cũ.

    Lưu ý:

    • Con số trên giả định mẫu có 100 trường (so_luong_truong). Nếu mẫu ít trường hơn (vd 30-50 trường) thì còn nhẹ hơn nữa.
    • Nếu giá trị nhập vào dài hơn (ghi chú, mô tả chi tiết...) thì mỗi bản ghi có thể lên 5-8 KB, vẫn rất nhỏ.
    • Muốn biết chính xác thực tế trên hệ thống của bạn, chạy lệnh này sau khi test tạo vài chục hồ sơ:
    sql
    SELECT pg_size_pretty(pg_total_relation_size('ho_so_thiet_bi_dong')) AS kich_thuoc_bang;

    lệnh này cho ra dung lượng thật của cả bảng (kể cả index), so sánh trước/sau khi tạo thêm biên bản để biết chính xác mức tăng trên máy chủ của bạn.

    về nguyên lý hoạt động chức năng vẫn giữ được như cũ chứ. chức năng tải file , nhập liệu...

    Kiểm tra lại toàn bộ hàm cap_nhat_hoan_thanh sau khi sửa

    Đúng, toàn bộ nguyên lý hoạt động và trải nghiệm người dùng giữ nguyên 100% — không mất chức năng nào. Vì tôi chỉ cắt bỏ đúng 1 bước "lưu thêm 1 bản sao file docx vào DB" mà không có chỗ nào đọc lại nó, nên rà theo từng chức năng:

    Chức năngTrướcSauCó đổi gì không?
    Nhập liệu / Tạo hồ sơ mới (luu-ho-so)Lưu JSON + render sẵn 2 file docx vào DBChỉ lưu JSONNgười dùng nhập y hệt, kết quả lưu thành công y hệt
    Sửa hồ sơ (cap-nhat-chinh-thuc)Cập nhật JSON + render lại 2 file lưu vào DBChỉ cập nhật JSONGiao diện, luồng thao tác không đổi
    Tick checkbox hoàn thànhCập nhật JSON + render lại lưu vào DBChỉ cập nhật JSONTrả về đúng thông báo "Cập nhật... thành công!" như cũ
    Nhân bản hồ sơCopy JSON + copy 2 file docxChỉ copy JSONHồ sơ mới vẫn đủ dữ liệu để tải/xem lại
    Xem trước (preview) online (live-preview)Vốn dĩ đã render trực tiếp từ template + JSON, không đụng file lưu sẵnKhông đổiKhông đổi gì
    Xem chi tiết hồ sơ (chi-tiet)Gọi tới live-preview để hiển thịKhông đổiKhông đổi gì
    Tải file Word về máy (tai-xuong)Vốn dĩ đã render trực tiếp từ template + JSON, không đọc file lưu sẵnKhông đổiFile tải về y hệt như cũ, vẫn đúng nội dung đã nhập

    Vì sao đảm bảo an toàn: file docx cuối cùng luôn chỉ phụ thuộc vào 2 thứ: template gốc (mau.file_phoi_bien_ban) và dữ liệu JSON đã nhập (hoso.du_lieu_nhap). Cả 2 route hiển thị (live-preview) và tải xuống (tai-xuong) từ trước tới giờ đều tự render lại từ 2 nguồn này mỗi lần gọi — cột file_bien_ban_xuat/file_gcn_xuat chỉ là một bản sao "chết", ghi vào cho có chứ chưa từng được đọc ra dùng ở đâu cả. Nên bỏ bước ghi đó đi không ảnh hưởng gì đến kết quả cuối cùng người dùng nhìn thấy.

    Điều duy nhất khác biệt (đã nói ở câu trả lời trước): nếu sau này bạn sửa lại template phôi mẫu, các hồ sơ cũ khi tải/xem lại sẽ áp theo template mới thay vì giữ nguyên bản gốc lúc tạo — đây là điểm duy nhất thay đổi về mặt hành vi, không phải lỗi chức năng.

    Nội dung chính
      0 Nhận xét
      Tags: python

      Cùng chuyên mục

      Liên hệ quảng cáo

      Tin mới

        Liên hệ (Contact)

        Tên

        Email *

        Thông báo *

        Tìm kiếm (SEARCH)

        Main Tags

        • ADROID
        • Affiliate + Dropshipping
        • AGC
        • AI
        • analog
        • Apk adroid
        • âm nhạc
        • Âm thanh
        • Âm Thanh Xe Hơi
        • bản đồ địa chính
        • Bản tin xã Vĩnh Kiên
        • Bảo dưỡng xe MG
        • bảo hiểm
        • Bảo vệ môi Trường
        • beckhoff
        • bể phốt
        • Bệnh
        • biến áp xung
        • Biến áp xuyến
        • Biến tần
        • Biến tần KDE300A
        • biến tần Schneider
        • Biến tần Simens
        • biến tần yaskawa
        • blogspot
        • bộ hòa
        • bồn cầu
        • C#
        • C53 realme
        • các nhà phân phối
        • cad electrical 2019
        • cải tạo
        • cài win
        • camera
        • Chào mừng 8/3
        • Chat gpt
        • Chăm sóc sắc đẹp
        • chế tạo biến tần
        • Chi Bộ
        • Chi Đoàn
        • chỉ huy trưởng
        • chìa
        • Chìa khóa thành công
        • chung tay
        • chuyển đổi số
        • chuyên gia
        • CODE WIN CC
        • CODESYS
        • com ảo
        • Công Đoàn
        • công tác hội
        • Cơ điện tử
        • cp1243-7
        • Crack tia
        • dao diện tia
        • Dạy con ngoan giỏi
        • Dạy con thông minh
        • Dây điện từ
        • DCS
        • Dịch vụ
        • driver
        • Dso138
        • Dự án
        • Đảng - Đoàn thể
        • Đánh bóng ô tô
        • Đào tạo nghề
        • Đào tạo vận hành
        • đẩu tư Bất động sản
        • đầu tư tài chính
        • Điện
        • Điện trở
        • Điện tử công suất
        • điện tường
        • điều khiển nhiệt độ
        • điều tốc
        • Đồ điện sửa chữa
        • Động cơ điện 1 pha
        • Động cơ điện 3 pha
        • Động cơ mua bán
        • động cơ vạn năng
        • đục tường
        • encoder
        • encore
        • Enigma Protector
        • Excel
        • Facebook
        • factory io
        • fasstAPI
        • faststone capture
        • fuxa
        • game đế chế
        • Gia Đình
        • Góc học tập và làm theo lời Bác
        • GOV
        • grafana
        • graphana
        • hàn nhiệt
        • hàn ống
        • Hantek 2c42
        • HIK
        • HMI
        • hmi delta
        • hmi simnes
        • HMI Wedcon
        • Học chức danh
        • Hội thi
        • IEC
        • IEC 104
        • IGBT
        • INVT
        • karaoke
        • Kaspersky Internet Security
        • KEP OPC
        • kepopc
        • key win cc oa
        • Khí cụ điện
        • khởi động mềm
        • khởi nghiệp
        • Kích
        • Kích cá
        • km
        • làm đẹp
        • Làm kinh tế giỏi
        • Lập công ty
        • lập trình zen
        • Lịch làm việc
        • Lịch sự
        • liệt não
        • Link kiện điện tử
        • logo simens
        • Lỗi phạt ô tô
        • mạch âm thanh
        • Mạch băm xung
        • Mạch nguồn xung
        • mạch nồi cơm
        • mạng
        • Máy biến áp
        • máy cắt
        • máy giặt
        • máy hàn
        • máy hàn chip
        • máy hàn tig wp 300
        • Máy lọc dầu
        • Máy phát điện
        • Máy phát điện xăng
        • máy tính
        • MG zs
        • Microstation SE
        • mobus
        • MODBUS
        • Module phát âm thanh MP3 DY-SV5W
        • mqtt
        • mua ô tô
        • mường hum
        • My Music
        • nart port
        • nậm ban2
        • next.js
        • nhẫn nhịn
        • node js
        • Note js
        • Nông thôn mới
        • odoo
        • OPC
        • opc. matrikon
        • OpenVPN
        • ổn áp
        • pdf
        • phân loại rác
        • Phật dạy
        • phong trào
        • Pid
        • PLC
        • plc abb
        • plc delta
        • Plc emerson
        • plc GE
        • plc LS
        • Plc Mitsubishi
        • PLC Mitsubishi FX1N
        • plc s7 200
        • plc s71200
        • PLC Schneider
        • plc sim avanced
        • plc simens
        • python
        • quản trị tài chính
        • Raspberry Pi
        • remote destrop
        • Rơ le bảo vệ
        • Rơ le CMC và studio PSL
        • S7 1200
        • S7 200
        • S7300
        • Sách
        • sách tổ tự động
        • sát hạch lái xe
        • SCR
        • secvo
        • SERVO
        • Sheet nhạc
        • Sim mới
        • sơ đồ bếp từ
        • sơn ô tô
        • SQL server
        • SSR
        • Step ĐC
        • Sửa chữa dc
        • sức khỏe
        • Sưu tầm
        • Tai biến
        • tài khoản Simens
        • Tài liệu kỹ thuật
        • Tailscale
        • Tâm lý
        • Teamviewer
        • tenten
        • thái độ
        • thay bo mạch
        • thay đổi góc nhìn
        • Thể thao
        • thi an toàn
        • Thi đua - Khen thưởng
        • thị trường điện
        • thingboard
        • thingsboard
        • Thông tin đấu thầu
        • Thông tin xử phạt
        • Thời sự
        • thời tiết
        • Thủ thuật máy tính
        • thủy điện
        • thyristor
        • TIA V13 SP2 pro
        • TIA V14
        • tia v15
        • Tia v16
        • Tia V17
        • tia V21
        • Tin tức - Sự kiện
        • tivi
        • touchpad-blocker
        • trạm phát thanh
        • TRIANGLE IEC
        • Trồng cây mừng Đảng mừng xuân 2024
        • tủ điện
        • Tủ lạnh
        • uctra_iso
        • Văn bản - Tài liệu
        • VBS
        • Video
        • Video động. Cơ điện
        • Video quấn động cơ điện
        • vmware
        • Vòng bi
        • vpn
        • Web
        • websever S7 1200
        • wifi
        • wincc
        • WinCC Unified
        • Wondershare Filmora
        • woodwoard
        • word
        • wwin cc
        • xây dựng
        • xây nhà tầng 2
        • xe 2025
        • xe ô tô
        • xem tuổi xây nhà
        • Xiaozhi
        • youtube
        • zenon
        • zoho mail

        Thời tiết hiện tại

        Chat hỗ trợ
        Chat ngay

        Lịch làm việc

          Thông báo

          • Nông thôn mới
          • Phong trào
          • Công tác hội
          • Chăm sóc sắc đẹp
          • Chuyển đổi số

          Đọc nhiều

          • HƯỚNG DẪN TẢI VÀ CÀI ĐẶT PHẦN MỀM LẬP TRÌNH PLC MITSUBISHI GX WORK 3
            HƯỚNG DẪN TẢI VÀ CÀI ĐẶT PHẦN MỀM LẬP TRÌNH PLC MITSUBISHI GX WORK 3
            12 thg 1, 2021

              Phần mềm nâng cấp lên từ phần mềm GX Work 2, Lập trình đượcc cho FX5U, có thêm công cụ check lỗi debug, bảo mật cao hơn, hỗ trợ cấu hình t...

          •  Hướng dẫn backup và restore Windows bằng Acronis True Image
            Hướng dẫn backup và restore Windows bằng Acronis True Image
            20 thg 11, 2020

              ackup lại Windows hay còn gọi là tạo   file ghost  Windows chắc hẳn đã quá quen thuộc với các bạn rồi đúng không? Đúng là như thế, việc Ba...

          • Hướng dẫn cài Win theo chuẩn UEFI – GPT bằng WinNTSetup
            Hướng dẫn cài Win theo chuẩn UEFI – GPT bằng WinNTSetup
            05 thg 5, 2020

            Trong bài viết trước mình đã hướng dẫn cho các bạn cách  tạo usb cài windows  theo chuẩn UEFI với công cụ Rufus rất dễ dàng rồi. Tuy nhiên,...

          • Cách tạo phân vùng boot EFI, MSR và Recovery cho chuẩn UEFI/GPT
            Cách tạo phân vùng boot EFI, MSR và Recovery cho chuẩn UEFI/GPT
            05 thg 5, 2020

            Lưu ý:  Bạn hãy đọc thật kỹ bài viết trước khi thực hiện nhé ! Nếu như trong quá trình sử dụng bạn gặp bất cứ lỗi gì, ví dụ như bị lỗi link...

          • Tải phần mềm GT-Works3 / GT-Designer
            Tải phần mềm GT-Works3 / GT-Designer
            19 thg 10, 2024

             https://drive.google.com/file/d/1nj2jKyMJQf8jKlDyATAXeAegQv3yLftc/view GT-Works3 V1.217 (GT-Designer3 V1.217) là phần mềm thiết kế HMI mới ...

          • các phần mềm com ảo
            các phần mềm com ảo
            14 thg 10, 2025

             Rất hay 👍 bạn đang quan tâm đến các phần mềm mô phỏng cổng COM (Virtual Serial Port) — dùng để giả lập kết nối RS232/RS485, test truyền n...

          Có thể bạn quan tâm

            Ban biên tập

            Thế Hương

            ........

            ...........

            Thống kê

            Số người truy cập: Tổng lượt truy cập:
            Liên hệ quảng cáo
            Trang chủ
            Hotline: 0989.000.420
            Liên hệ
            RSS
            Lên đầu trang

            Cơ điện Huế Hương - Yên Bình -Yên Bái

            Địa chỉ: Xã Vĩnh Kiên - Yên Bình - Yên Bái
            Email: vuhuong.tbc@gmail.com
            Liên hệ: 0989000420

            Template blogspot bán hàng và bất động sản