Thứ Sáu, 18 tháng 8, 2023

Kiểm soát đồng thời nhiều phiên bản (MVCC) là gì

Trong bài đăng này, tôi đang chia sẻ lưu ý cơ bản về điều khiển đồng thời nhiều phiên bản và giải thích cách MVCC hoạt động.

Các bạn, bạn có thể tìm thấy rất nhiều lý thuyết và nghiên cứu về MVCC, nhưng ở đây tôi đã chia sẻ lý thuyết này bằng cách đưa ra một ví dụ dễ hiểu


Điều khiển đồng thời nhiều phiên bản là gì? :

Rất đơn giản, "Một bản ghi có nhiều phiên bản".

Ví dụ,

Người dùng A —-> đã chèn một bản ghi có ID 1. (đã lưu trữ dữ liệu này vào một trang dữ liệu.)

Người dùng B —-> cập nhật bản ghi cho ID 1.

Các bạn, bạn đang nghĩ gì bây giờ?

Một bản ghi do người dùng khác chèn và cập nhật.

Được chèn lần đầu tiên, phiên bản cũ của bản ghi được thay đổi bởi câu lệnh cập nhật mới và trở thành phiên bản mới của bản ghi. Nhưng phiên bản mới của bản ghi được thêm riêng trong trang dữ liệu.

Bất kể những thay đổi khác nhau xảy ra trên cùng một bản ghi, MVCC đã lưu trữ phiên bản khác nhau cho mỗi thay đổi, đây không phải là một quá trình bị ghi đè nhưng nó lưu trữ tất cả các phiên bản khác nhau của bản ghi.

Ví dụ,

Bạn đã viết một câu trong cuốn sách của mình.

Câu là : "Tôi là nhà phát triển cơ sở dữ liệu giỏi".

Bây giờ thay đổi câu này.

Câu là : "Tôi là quản trị viên cơ sở dữ liệu giỏi".

Bây giờ đối với thay đổi đó, bạn có thể xóa câu đó và thay đổi "nhà phát triển" thành "quản trị viên".

Các công cụ cơ sở dữ liệu khác cũng làm điều tương tự như bạn làm trong cuộc sống thực của mình, nhưng MVCC đã lưu trữ hai câu đó với các phiên bản khác nhau.

Phiên bản cũ : "Tôi là nhà phát triển cơ sở dữ liệu giỏi"

Phiên bản mới : "Tôi là quản trị viên cơ sở dữ liệu giỏi"

Theo Mặc định, Người dùng chỉ có thể chọn một phiên bản mới của dữ liệu.

Đó là định nghĩa và ví dụ đơn giản của MVCC.

Tại sao lại là MVCC?:

Trước tiên, hãy thảo luận về tính đồng thời, nhiều người dùng cùng lúc truy cập cơ sở dữ liệu hoặc bản ghi cho các mục đích khác nhau.

MVCC cung cấp quyền truy cập đồng thời vào cơ sở dữ liệu.

Hãy tưởng tượng, một người dùng đang đọc một bản ghi và người dùng thứ hai đang cố gắng cập nhật cùng một bản ghi. Bây giờ người đọc muốn đọc bản ghi đó trước khi hoàn tất quá trình cập nhật.
Trong trường hợp này, bạn có thể cho phép người đọc đọc dữ liệu chưa được cam kết hoặc dữ liệu không nhất quán chưa được cập nhật.

Mặt khác, Bạn có thể áp dụng khóa, trong đó tất cả người đọc phải đợi cho đến khi cập nhật hoàn tất.

Nhưng khóa và đọc bẩn này không phải là một giải pháp thích hợp vì khóa có thể làm giảm hiệu suất và đọc bẩn không hiển thị dữ liệu chính xác.

Trong tình huống này, MVCC là giải pháp tốt nhất, nơi người đọc có thể xem phiên bản dữ liệu đã cam kết cũ và sau khi cập nhật xong, người đọc có thể xem phiên bản dữ liệu đã cam kết mới..
Quá trình đọc và quá trình ghi không bao giờ chặn lẫn nhau.

E.g.

Người đọc có thể đọc câu này "Tôi là nhà phát triển cơ sở dữ liệu. “

Sau khi cập nhật người đọc có thể đọc câu mới "Tôi là quản trị viên cơ sở dữ liệu. “


Hạn chế của MVCC :

Hạn chế chính của MVCC là, nó đòi hỏi nhiều dung lượng hơn để lưu trữ một phiên bản khác của dữ liệu.

Có, sau này, bạn có thể xóa phiên bản cũ của dữ liệu bằng cách chỉ định lệnh dọn dẹp. Nhưng bạn yêu cầu bảo trì nhiều hơn trên các bảng đó để loại bỏ phân mảnh được tạo bởi phiên bản dữ liệu cũ.

Trong MVCC, cùng một dữ liệu gây ra xung đột cập nhật vì hai giao dịch khác nhau có thể cập nhật cùng một phiên bản của hàng.


Hầu hết các hệ thống cơ sở dữ liệu MVCC:

ORACLE

postgresql

MySQL (chỉ công cụ InnoDB)

Bạn cũng có thể đạt được MVCC trong Microsoft SQL Server bằng cách sử dụng ” Snapshot Isolation Level “.

=============================
Website không bao giờ chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn muốn tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ kinh nghiệm, thủ tục, quy trình, bí kíp thực chiến mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin1_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master