PostgreSQL vs MySQL: So sánh hiệu năng trong truy vấn phức tạp và CCU lớn | Trần Quốc Huy - Wecommit

แชร์
ฝัง
  • เผยแพร่เมื่อ 15 พ.ย. 2024

ความคิดเห็น • 197

  • @tranquochuywecommit
    @tranquochuywecommit  หลายเดือนก่อน +9

    Gửi mọi người Group Telegream Wecommit Public Community : www.wecommit.com.vn/wecommitcommunity ,anh em có thể trao đổi những câu hỏi , vấn đề khi xem Video và kết nối với tôi trong Group nhé (trường hợp click trực tiếp bị lỗi thì ae copy link ra browser nhé)

  • @duongxuana414
    @duongxuana414 5 หลายเดือนก่อน +52

    Cảm ơn anh Huy giải thích rất chi tiết từ kiến trúc của 2 loại database ạ. Với hệ thống write nhiều và có nhiều index thì hiệu năng postgreSQL bị ảnh hưởng, tuy nhiên với những câu lệnh phức tạp thì để phân tích và đưa ra execution plan thì postgreSQL mạnh hơn MySQL. Do đó với hệ thống nhỏ, truy vấn đơn giản thì dùng ông nào cũng được, với hệ thống cần truy vấn những câu lệnh phức tạp thì PostgreSQL ngon hơn.

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน +6

      hiểu từ kiến trúc anh em sẽ rất tự tin và nhớ lâu.
      Một ngày tuyệt vời nhé em

    • @VV1-s2r
      @VV1-s2r 5 หลายเดือนก่อน +3

      @@tranquochuywecommit "hệ thống write nhiều và có nhiều index" thì MySQL có cơ chế table riêng ngon hơn, vậy tại sao postgres ko sử dụng cơ chế tương tự? phải chăng làm thế thì nó ko phân tích và optimize đc câu query cho insert/update?

    • @Huynguyen-ew1ep
      @Huynguyen-ew1ep 5 หลายเดือนก่อน +13

      Vì trong innoDB mysql thì index và dữ liệu là 1 thể thống nhất .Còn postgres thì index và dữ liệu lưu riêng biệt (mysql các bảng nó lưu trong 1 file có tên là .ibd còn postgresql thì phân chia phức tạp hơn và qua 1 thứ gọi là OID)
      Khi 1 truy vấn đi vào , cơ chế index tách riêng giúp postgresq có thể kết hợp các loại chỉ mục khác nhau trong câu truy vấn tốt hơn và không bị hạn chế I/O.
      Còn mysql thì ngược lại do index và dữ liệu là 1 thể thống nhất -> khi bạn search thực tế là nó quét luôn dòng dữ liệu và index 1 lúc làm tăng I/O cũng như không thể kết hợp các index với nhau được ( vì muốn kết hợp thì bắt buộc phải load toàn bộ data)
      Do vậy khi write -> cơ chế chỉ mục và dữ liệu là 1 thể thống nhất giúp cho việc nó chỉ write 1 lần duy nhất index bị ảnh hưởng thôi .
      Ngược lại khi tách dữ liệu và index , thì write -> bắt buộc phải write cho toàn bộ index .
      Đó là lí do tại sao postgresql bạn có thể làm việc tốt với dữ liệu json , vì bản chất nó chỉ tốn I/O cho việc load các dữ liệu có index thôi . Mysql thì nó phải load luôn cả dòng dữ liệu chứa json , điều này làm tăng I/O .
      Tóm tắt : Mysql khi load secondery index -> đối chiếu với primary key -> ra kết quả (tốn x2 công việc)
      Postgresql : load 1 lần duy nhất và không có khái niệm secondery index (bản chất là không có khóa chính) -> đẩy vào heap

    • @futhedude4848
      @futhedude4848 5 หลายเดือนก่อน

      @@Huynguyen-ew1ep note ở đây để t2 quay lại ngâm cứu ạ.

    • @Huynguyen-ew1ep
      @Huynguyen-ew1ep 5 หลายเดือนก่อน

      @@futhedude4848 Ok nha bạn . Nếu mình có phát biểu sai gì đó thì cho mình thêm thông tin nha .
      Cái này mình cũng chỉ nghiên cứu sơ qua có thể không chính xác ở các bản version khác nhau

  • @tranquochuywecommit
    @tranquochuywecommit  2 หลายเดือนก่อน +12

    Công thức tạo dựng sự nghiệp không giới hạn của tôi - TOP 1% SECRET: www.top1percentsecret.com/

    • @vjcspy
      @vjcspy 2 หลายเดือนก่อน +5

      nói thế này thì dìm hàng postgresql quá. với cả kiến thức cũng SAI. Khi đã nói đến MVCC thì bản chất cả 2 thằng nó đều dùng chung 1 cách cả thôi. Trừ khi mysql không sử dụng innodb ví dụ như dùng myisam thì mới có chuyện ghi đè dữ liệu. Với cả không có chuyện nó phải index lại toàn bộ các row khác =)) Học lại kiến thức cơ bản đi anh ooi.

    • @tranquochuywecommit
      @tranquochuywecommit  2 หลายเดือนก่อน +1

      xem phân tích và demo đi anh em, anh em học ngọn không học gốc rồi, mình phân tích, dẫn chứng cụ thể chứ có nói vu vơ đâu

  • @ThanhTran-gm6cy
    @ThanhTran-gm6cy 2 หลายเดือนก่อน +1

    những kiến thức có lẽ chỉ có trong những khóa học phải bỏ tiền ra mua, thì lại miễn phí ở kênh của anh.
    thật sự cảm ơn anh rất nhiều

  • @namnguyenpt
    @namnguyenpt 5 หลายเดือนก่อน +12

    Cảm ơn anh Huy, kiến thức rất chất lượng, ngắn gọn xúc tích, hiểu luôn được bản chất vấn đề và có tư duy đánh giá lựa chọn database phù hợp. Tiện đây em có bổ sung thêm cho postgres database có cơ chế gọi là "Heap-Only Tuples (HOT)" giúp tái sử dụng lại các vùng dữ liệu cấp cũ, giúp giảm kích thước bảng, index và giảm gánh nặng cho vacuum (vacuum giống như 1 cô dọn vệ sinh trong trường học ). Nhờ "HOT" giúp các hạn chế mvcc của postgres được cải thiện khá nhiều ạ.

  • @silentknight46
    @silentknight46 5 หลายเดือนก่อน +10

    Hay quá, làm dev lâu năm giờ mới biết được những kiến thức này

  • @damvv.ptit12
    @damvv.ptit12 5 หลายเดือนก่อน +1

    Xem những video của anh Huy như nghe một câu chuyện, xem một bộ phim mà mình yêu thích. Muốn nuốt từng dòng đừng đoạn 1 😊😊😊. Kiến thức chuyên sâu và năng lượng chia sẻ tích cực làm người nghe phát sướng. Cảm ơn anh rất nhiều, cảm ơn anh đã chia sẻ.🤩🤩🤩

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      đọc bình luận của chú thú vị không kém.
      Cảm ơn Đam nhé

    • @damvv.ptit12
      @damvv.ptit12 5 หลายเดือนก่อน

      @@tranquochuywecommit em luyện thành 1 chuyên gia cmt dạo được đấy a nhỉ

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      @@damvv.ptit12 được đấy chú, đã làm gì thỉ phải Top 1% trong việc mình làm. Hiệu quả đều đến cả

  • @chuannguyen1686
    @chuannguyen1686 5 หลายเดือนก่อน +1

    E học đc rất nhiều thứ từ trang của a, từ kiến thức chuyên môn cho tới tư duy trong công việc.

  • @nguyenphucanh7523
    @nguyenphucanh7523 4 หลายเดือนก่อน +1

    kiến thức của a rất bổ ích. em muốn hỏi thêm: microsoft SQL server thì sao a

  • @duyetpham7924
    @duyetpham7924 5 หลายเดือนก่อน +2

    Hay quá, cảm ơn a, e hiểu hơn vì sao Big data open source họ hay lấy Postgresql làm gốc

  • @spacex92
    @spacex92 5 หลายเดือนก่อน

    Thanks anh, PostgreSQL vs MySQL là những CSDL rất phổ biến và đặc biệt là miễn phí, do vậy trong các cty ae DEV thường làm từ a-z, rất cần những kiến thức hữu ích như vậy. Vote 5* cho video này.

  • @nguyenduyuc6889
    @nguyenduyuc6889 3 หลายเดือนก่อน

    Cảm ơn anh đã chia sẻ các kinh nghiệm phong phú, tiện đây em muốn hỏi là anh có thể thực hiện bài đánh giá cho SurrealDB, MongoDB và ScyllaDB không ạ?

  • @vulam1821
    @vulam1821 5 หลายเดือนก่อน +2

    A có thể chia sẻ nguồn bài viết được ko?
    Chưa từng nghe về ref column trong mvcc
    Khi update thì pg sẽ tạo new row version với transaction id, xmin,xmax
    Sở dĩ transaction khác ko đọc dc uncommited data là vì transaction khác read commited data từ snapshot trong quá khứ, ko phải snapshot mà current transaction đang dùng

  • @vankhanhnguyen2514
    @vankhanhnguyen2514 5 หลายเดือนก่อน +1

    Cảm ơn a Huy về bài chia sẻ, rất hay và áp dụng được liền vào các bài toán thực tế

  • @chieule4999
    @chieule4999 5 หลายเดือนก่อน

    Em cảm ơn anh ạ. Anh giải thích rất chi tiết và giúp em rút ngắn được thời gian tìm hiểu và học tập về database rất nhiều

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      chào mừng em đến với kênh youtube của anh.

  • @dongphim
    @dongphim 5 หลายเดือนก่อน

    Quá hay nếu anh không nói ra thì có lẽ sẽ mất thêm nhiều năm nữa để hiểu cơ chế của MYSQL và POSTGRES.
    Cảm ơn anh, chúc anh nhiều sức khỏe.

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      người anh em đăng ký kênh để nhận được thông tin sớm nhất của các video sắp tới nhé

  • @NguyenQuang-vi9su
    @NguyenQuang-vi9su 5 หลายเดือนก่อน +1

    Cũng từng tìm hiểu để xem thì cũng chỉ biết là postgres không nên sử dụng vào trong trường hợp ghi nhiều với các bài test chứ cũng chưa hiểu rõ vì sao.
    nay thấy video giải thích của anh rõ luôn

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน +1

      đi từ kiến trúc thì anh em sẽ thấy mọi thứ rất rõ ràng, vì thế anh luôn chia sẻ mọi thứ dưới góc độ này.
      Cảm ơn em đã ủng hộ video của anh nhé

    • @NguyenQuang-vi9su
      @NguyenQuang-vi9su 5 หลายเดือนก่อน

      @@tranquochuywecommit có video của a là hiểu rõ vấn đề, e dùng nhiều về mysql cũng đã cài posgres bài toán to nên chưa gặp vấn đề về dữ liệu để phải suy nghĩ lựa chọn. với lại cái pgadmin quản lý đang hơi rườm rà.

  • @tiendang5149
    @tiendang5149 5 หลายเดือนก่อน +1

    1 video cực kì chất lượng, cảm ơn anh đã chia sẻ

  • @dongpham6878
    @dongpham6878 4 หลายเดือนก่อน

    Hay quá anh ạ. Mong anh ra nhiều videos hơn nữa nhé. Cảm ơn anh rất nhiều ạ

  • @tuancuong92
    @tuancuong92 5 หลายเดือนก่อน

    Cám ơn anh, em đang từ mongo muốn quay lại đào sâu nghiên cứu 2 ông này thì lại gặp được video của anh đúng lúc 😂

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน +2

      Anh có cả video mysql full và postgres full trên kênh này đấy. Nếu em muốn nghiên cứu có thể xem 2 video này, nó tiết kiệm nhiều thời gian đọc tài liệu cho em.

  • @willnguyendev
    @willnguyendev 4 หลายเดือนก่อน

    Có thể cho mình hỏi dùng phần mềm gì để present bằng apple pen ko ah?

  • @phivunguyen6536
    @phivunguyen6536 5 หลายเดือนก่อน +1

    Cảm ơn anh Huy rất nhiều, kiến thức rất chất lượng ạ 😊

  • @gianduongnguyen1590
    @gianduongnguyen1590 5 หลายเดือนก่อน +1

    cảm ơn anh ạ, anh cho em hỏi làm sao để anh tìm hiểu được những thứ như này vậy ạ, danh đọc source code, đọc docs hay làm gì khác vậy ạ

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      mọi thứ bắt nguồn từ sự tò mò và mong muốn tìm hiểu sâu trong lĩnh vực này em ạ.
      Anh học và đọc rất nhiều. Đọc documents là điều bắt buộc rồi, ngoài ra anh học từ nhiều thứ trong quá trình làm các dự án và nghiên cứu các vấn đề gặp phải trong dự án.
      Anh cũng có 1 cộng đồng chia sẻ các dự án với nhau, nên nhiều cơ hội để tìm hiểu.

  • @cunu1000
    @cunu1000 3 หลายเดือนก่อน +1

    Cảm ơn kiến thức a chia sẽ 🙏🙏🙏

  • @TruongCaoXuan
    @TruongCaoXuan 5 หลายเดือนก่อน +1

    Việc chọn giữa MySQL và PostgreSQL phụ thuộc vào yêu cầu cụ thể của ứng dụng và môi trường sử dụng.
    -> Chọn MySQL trong trường hợp xây dựng một hệ thống OLTP như ứng dụng web cần hiệu suất cao và dễ quản lý, hoặc nếu ứng dụng của bạn có lượng truy vấn ghi (write) nhiều hơn đọc (read).
    -> Chọn PostgreSQL trong trường hợp xây dựng hệ thống OLAP như Data warehouse để xử lý các truy vấn đọc (read) phức tạp.

    • @NhanNguyen-ei7tr
      @NhanNguyen-ei7tr 5 หลายเดือนก่อน +1

      Postgress cũng vẫn là OTLP, OLAP em nghĩ nên chọn 1 csdl chuyên OLAP anh ạ.

    • @futhedude4848
      @futhedude4848 5 หลายเดือนก่อน

      note ở đây để t2 quay lại ngâm cứu ạ.

  • @vietronaldo23w
    @vietronaldo23w 4 หลายเดือนก่อน

    Đầu tiên e cảm ơn a vì những chia sẻ bổ ích của a. e có 1 câu hỏi ạ.
    Mysql: theo a nói thì những thằng khác (nhưng thằng không thực hiện lệnh update) thì sẽ lấy dữ liệu trong vùng undo đúng k ạ. vậy thì lúc không có thằng nào update thì vùng undo đấy nó có tồn tại không a.
    - nếu có thì tức là mỗi câu lệnh select nó đều phải check trước liệu data có trong undo trước đúng không ạ.
    - nếu không phải lúc nào cũng tồn tại thì làm sao để nó phân biệt được lúc nào cần check trong undo lúc nào query trực tiếp trong bảng thực ạ.
    Lần nữa cảm ơn a và nếu được a có thể đi kèm với documents về mvcc của postgres và mysql được không ạ.

  • @bongakinhien2340
    @bongakinhien2340 4 หลายเดือนก่อน

    Vậy Postgre phù hợp với các bài toán thực tế nào anh nhỉ? Với hệ thống ERP doanh nghiệp khoảng 100 user có ổn không? Cảm ơn anh

    • @tranquochuywecommit
      @tranquochuywecommit  4 หลายเดือนก่อน +1

      hệ thống mà nhỏ thì dùng loại nào cũng được anh em nhé

    • @bongakinhien2340
      @bongakinhien2340 4 หลายเดือนก่อน

      @@tranquochuywecommit Vậy Postgre sẽ không ổn nếu số lượng concurrent user từ bao nhiêu trở lên ạ. Hệ thống ERP ạ

    • @tranquochuywecommit
      @tranquochuywecommit  4 หลายเดือนก่อน

      @@bongakinhien2340 xem kỹ phần PostgreSQL và MySQL phù hợp cái nào ở trong video nhé anh em.

  • @Hanako67198
    @Hanako67198 3 หลายเดือนก่อน

    e có 1 thắc mắc về clip oracle a có nói mySQL có tempdb chứ không có undo anh

  • @theanhhoang5866
    @theanhhoang5866 3 หลายเดือนก่อน

    Video hay quá ạ
    Anh làm tiếp về MongoDB và Cassandra được không ạ

  • @tiepnguyenngoc2526
    @tiepnguyenngoc2526 2 หลายเดือนก่อน

    tôi đăng ký ba nick cho ông rồi đấy bởi vì kênh quá hay

  • @buikha2011
    @buikha2011 4 หลายเดือนก่อน

    Kênh phát triển nhanh quá, chúc mừng anh Huy

  • @chuviet7865
    @chuviet7865 5 หลายเดือนก่อน +1

    kiến thức quá tuyệt vời. cảm ơn đã chia sẻ. so sánh giữa PostgreSQL với SQL Server đi a.

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      Đang có 1 loạt ý tưởng, xem so sánh cái nào anh em ah
      1. PostgreSQL vs Oracle
      2. PostgreSQL vs MongoDB
      3. SQL Server vs Oracle
      4. MySQL vs Oracle

    • @quanghungnguyen3018
      @quanghungnguyen3018 5 หลายเดือนก่อน

      ​​@@tranquochuywecommit anh làm so sánh 3.mssql với oracle trước đi ạ

  • @tridangvan5159
    @tridangvan5159 5 หลายเดือนก่อน +1

    Kiến thức quá hay anh ơi. Cảm ơn ah đã chia sẻ ạ

  • @hoangbuiminh1400
    @hoangbuiminh1400 5 หลายเดือนก่อน

    Video này tiếp tục khiến em phải wow. Cảm ơn anh Huy nhiều ạ

  • @tachinguyen4dev
    @tachinguyen4dev 5 หลายเดือนก่อน

    anh có thể làm bài so sánh MVCC postgresql với MSSQL không, bỏ qua vấn đề chi phí. Xin cám ơn anh

  • @chauvuluan1926
    @chauvuluan1926 5 หลายเดือนก่อน +1

    Cảm ơn anh , Video rất hay , anh hãy so sánh PostgreSQL vs Oracle đi anh .

  • @solution-archiect
    @solution-archiect 5 หลายเดือนก่อน

    anh Huy ơi, anh xài phần mềm gì để vẽ trên Ipad và record trực tiếp vậy ạ? Em đang muốn làm video kiểu như vậy.

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน +1

      goodnotes với obs anh em nhé.
      Anh em có thể kết bạn với tôi (thông tin trong phần bình luận), có gì giúp được tôi giúp cho

    • @solution-archiect
      @solution-archiect 5 หลายเดือนก่อน

      @@tranquochuywecommit dạ vâng, em cảm ơn anh Huy nhiều.

  • @nguyendat-uq2bc
    @nguyendat-uq2bc 5 หลายเดือนก่อน

    Những kiến thức đáng quý đến khi xem xong video này em mới biết. Trân trọng từng video anh chia sẻ ạ!

  • @HungNguyenVan-dd9qm
    @HungNguyenVan-dd9qm 5 หลายเดือนก่อน

    Dev hơn 10 năm giờ mới nắm được kiến thức này. Cảm ơn anh ạ

  • @AnhNguyen-we1wt
    @AnhNguyen-we1wt 3 หลายเดือนก่อน

    Cảm ơn kiến thức rất bổ ích từ bạn, mình xin hỏi một câu: Vậy tại sao PostgreSQL lại làm điều tưởng chừng "ngu ngốc" như vậy khi UPDATE, có chăng lý do nào có lợi ở mặt khác nên PostgreSQL đã chọn thiết kế như thế?

    • @ThanhTung-yo1wn
      @ThanhTung-yo1wn 18 วันที่ผ่านมา

      Mình nghĩ đấy là chi phí đánh đổi thôi. UPDATE nó cồng kềnh, nhiều thông tin cần update thì đến lúc đọc, explain query thì Postgre lại có lợi thế hơn. Nên mình nghĩ => heavy update -> Mysql còn heavy READ => Postgre

  • @quanghungnguyen3018
    @quanghungnguyen3018 5 หลายเดือนก่อน

    Cảm ơn anh❤. Anh có thể so sánh giữa 2 loại database trả phí là MSSQL và Oracle được không ạ? Với các hệ thống quản lý dữ liệu lớn thì em thấy các công ty ở Việt Nam dùng Oracle nhiều hơn MSSQL. Có phải vì Oracle tối ưu về mặt chi phí hơn không ạ?

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      Oracle đắt hơn đấy, nhưng nó có những vấn đề quan trọng hơn chi phí nhiều lần. Video tới anh sẽ so sánh 2 loại này nhé

    • @quanghungnguyen3018
      @quanghungnguyen3018 4 หลายเดือนก่อน

      @@tranquochuywecommit Vâng, em cảm ơn anh ạ

  • @PLCTrainingforBeginners
    @PLCTrainingforBeginners 5 หลายเดือนก่อน +2

    Thảo nào nhiều hệ thống lớn họ dùng Postgre

  • @pinterest1141
    @pinterest1141 4 หลายเดือนก่อน

    hay quá sếp ơi, kênh nội dung chất lượng

  • @hieuvan5278
    @hieuvan5278 5 หลายเดือนก่อน

    Kiến thức quá hay, xem anh giải thích thấy cuốn thật sự :))

  • @baudeejay8592
    @baudeejay8592 5 หลายเดือนก่อน

    Anh dùng ứng dụng nào vẽ thế anh ?

  • @harry-vu
    @harry-vu 5 หลายเดือนก่อน

    hay quá ạ làm bao lâu rồi giờ mới được khai sáng ạ. Cảm ơn a đã chia sẻ những kiến thức chất lượng ạ 😁😁

  • @TranMai-ri8pc
    @TranMai-ri8pc 3 หลายเดือนก่อน

    bên e dùng odoo, sao vẫn thấy tih thoảng họ lên lịch vaccum thủ công nhỉ @@, theo video trên thì e đang nghĩ vaccum là tự động :D

  • @trunglehuynh
    @trunglehuynh 4 หลายเดือนก่อน

    Video rất hay bạn cho mình hỏi, Nếu bản index cùng chỉ về 2 địa chỉ, ví dụ Hoàng -> [A, D], thì làm sao PostgreSQL biết phải sử dụng cái nào? Cảm ơn

  • @tuanhiepnguyen2376
    @tuanhiepnguyen2376 5 หลายเดือนก่อน

    Em cảm ơn vì video hay của anh, rất chi tiết rõ ràng dễ hiểu ,em có câu hỏi về mysql khi không may chạy lệnh deleted all các bản ghi trong bảng cần back lại thì làm thế nào ạ

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      Delete và đã commit rồi ah anh em?
      Trường hợp này thì nguyên tắc đầu tiên vẫn luôn là câu hỏi "có bản backup không?"

  • @Sun_sun_19
    @Sun_sun_19 4 หลายเดือนก่อน

    Anh ơi, có video trình bày về database không ạ? Em chưa hiểu về Database ạ

    • @tranquochuywecommit
      @tranquochuywecommit  4 หลายเดือนก่อน

      em có thể xem 1 video full course về database bất kỳ của anh trên kênh này. Nếu mới bắt đầu em nên xem Mysql full course trên kênh nhé

    • @Sun_sun_19
      @Sun_sun_19 4 หลายเดือนก่อน

      @@tranquochuywecommit em cảm ơn anh nhiều ạ

  • @nguyenthethu7631
    @nguyenthethu7631 5 หลายเดือนก่อน

    Anh Huy cho em hỏi tại sao Postgre lại dùng cơ chế tạo thêm dòng trong mvcc. Rõ ràng đây là một lỗ hổng trong hiệu năng của hệ thống. Postgre làm như đổi lại được điều gì?

    • @luanpham9114
      @luanpham9114 5 หลายเดือนก่อน

      Mặc dù việc tạo thêm dòng trong MVCC có thể gây ra chi phí về không gian lưu trữ và yêu cầu thực hiện VACUUM để duy trì hiệu suất, lợi ích mà MVCC mang lại trong việc quản lý đồng thời và đảm bảo tính nhất quán dữ liệu vượt trội hơn nhiều so với các hạn chế này. Đây là lý do tại sao PostgreSQL chọn cơ chế MVCC, mang lại một hệ thống quản lý cơ sở dữ liệu mạnh mẽ và hiệu quả cho các ứng dụng hiện đại.
      1. Tính nhất quán mà không khóa (Lock-free Consistency)
      MVCC cho phép các giao dịch đọc và ghi cùng lúc mà không cần chặn nhau. Điều này đạt được bằng cách tạo ra các phiên bản khác nhau của cùng một dòng dữ liệu:
      Đọc không khóa: Các giao dịch đọc có thể đọc dữ liệu phiên bản cũ ngay cả khi có các giao dịch ghi đang diễn ra, miễn là dữ liệu này phù hợp với thời gian snapshot của giao dịch.
      Ghi không chặn: Các giao dịch ghi có thể tạo phiên bản mới của dòng dữ liệu mà không làm gián đoạn các giao dịch đọc đang tồn tại.
      2. Isolation Levels và Snapshot Isolation
      PostgreSQL cung cấp các mức độ cô lập khác nhau để quản lý sự cô lập của giao dịch, từ Read Uncommitted đến Serializable:
      Snapshot Isolation: Mỗi giao dịch nhìn thấy một "snapshot" của cơ sở dữ liệu tại thời điểm nó bắt đầu. Điều này giúp giảm hiện tượng đọc bẩn (dirty reads) và đọc không lặp lại (non-repeatable reads), cải thiện tính nhất quán mà không cần khóa nhiều.
      3. Giảm xung đột (Conflict Reduction)
      MVCC giảm xung đột giữa các giao dịch đọc và ghi. Trong cơ chế khóa truyền thống, giao dịch đọc phải chờ cho giao dịch ghi hoàn thành, dẫn đến tình trạng nghẽn cổ chai. Với MVCC, nhiều giao dịch có thể diễn ra đồng thời, cải thiện hiệu suất tổng thể.
      4. Lợi ích của Vacuum
      PostgreSQL sử dụng cơ chế VACUUM để dọn dẹp các phiên bản cũ của dòng dữ liệu:
      Dọn dẹp và tái sử dụng không gian: VACUUM xóa bỏ các phiên bản không còn cần thiết, tái sử dụng không gian đã được giải phóng.
      Phân mảnh giảm thiểu: Mặc dù VACUUM cần tài nguyên, nó giúp duy trì hiệu suất cơ sở dữ liệu bằng cách giảm phân mảnh và giữ cho kích thước cơ sở dữ liệu không tăng quá mức.
      5. Độ tin cậy và khôi phục (Reliability and Recovery)
      MVCC giúp PostgreSQL khôi phục cơ sở dữ liệu một cách dễ dàng hơn:
      Khôi phục sau sự cố: Nếu hệ thống gặp sự cố, các giao dịch chưa hoàn thành sẽ không ảnh hưởng đến các phiên bản dữ liệu đã được xác nhận (committed).
      Tăng khả năng phục hồi: Cơ chế này giúp bảo vệ dữ liệu khỏi các lỗi phần cứng và phần mềm bằng cách duy trì nhiều phiên bản dữ liệu.
      6. Tối ưu hóa hiệu suất cho các tải công việc cụ thể
      MVCC có thể tối ưu hóa cho các ứng dụng cụ thể:
      Ứng dụng nhiều đọc: Với các ứng dụng có tỷ lệ đọc cao, MVCC cho phép các giao dịch đọc thực thi nhanh chóng mà không bị chặn bởi các giao dịch ghi.
      Ứng dụng nhiều ghi: MVCC có thể xử lý tốt các ứng dụng ghi nhiều mà không ảnh hưởng nhiều đến hiệu suất đọc.

  • @trinhle-sm2fu
    @trinhle-sm2fu 5 หลายเดือนก่อน

    Chào anh Huy cho em hỏi vậy nếu hệ thống vừa phải ghi liên tục và truy vấn phức tạp thì nên dùng thằng nào hay có cách xử lý khác ạ

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน +1

      Phải xem trong 2 cái đấy thì cái nào là chủ đạo, đâu là nghiệp vụ quan trọng nhất.
      Tư duy 80-20 thôi anh em, tập trung cho 20% quan trọng nhất

  • @LearningEverything1001
    @LearningEverything1001 5 หลายเดือนก่อน

    sự khác biệt giữa coder giỏi và kinh nghiệm ở video này , thks a

  • @PhatNguyen-eq5tm
    @PhatNguyen-eq5tm 5 หลายเดือนก่อน

    Nếu cập nhật mà thêm record(đối với Posgres) thì thì sẽ lấy-gán ID như thế nào anh? Có giống như lúc insert? VÍ dụ last id = 100, sau đó 100 transaction update và không có cái nào commit thì id.nextVal() lúc này là 101 hay 201?

  • @duyanhnguyen1562
    @duyanhnguyen1562 5 หลายเดือนก่อน

    Cảm ơn anh về bài chia sẻ này, nó rất hay và giúp em hiểu ra một vài vấn đề của dự án em đang làm. Tuy nhiên em có 1 câu hỏi đó là khi mà postgres thêm 1 dòng mới khi chạy câu lệnh update thì đối với bảng có id là unique thì không biết là nó có vi phạm cái unique này không bởi như em thấy trong vd của anh là bản ghi thêm mới khi đó có id là y hệt bản ghi cũ. Mong sớm nhận được phản hồi từ anh ạ :D

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      không hề vi phạm gì em nhé. Đây là cơ chế xử lý ngầm của Database.
      Unique của em là ở phía logic thôi.

    • @duyanhnguyen1562
      @duyanhnguyen1562 5 หลายเดือนก่อน

      Dạ vâng ạ! Cảm ơn anh nhiều nhé 😁

  • @appornistudio2767
    @appornistudio2767 5 หลายเดือนก่อน

    cho mình xin tên cái đèn chụp cao cao với nhé. Nhìn đẹp quá.

  • @aken2802
    @aken2802 5 หลายเดือนก่อน

    Cái tiến trình vancum mình có thể setting thời gian nó chạy được không nhỉ ! ví dụ set vao bản đêm ko phải giờ cao điểm để bớt giành tài nguyên của table

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน +1

      nếu nói chi tiết hơn về vacuum trong postgresql thì nó có 2 kiểu: tự động và thủ công.
      Anh em có thể điều chỉnh chiến lược và thời gian để tiến trình vacuum ảnh hưởng ít nhất tới hiệu năng.

    • @futhedude4848
      @futhedude4848 5 หลายเดือนก่อน

      note ở đây để t2 quay lại ngâm cứu ạ.

  • @realestatewebsingapore7276
    @realestatewebsingapore7276 2 หลายเดือนก่อน +1

    Anh em dev giờ chỉ có tập trung học tiếng Anh cho tốt.. rồi đọc tài liệu gốc tiếng Anh luôn.. chứ nghe kiểu này dịch ra ko bao giờ chính xác

  • @ThangNguyen-ic4ej
    @ThangNguyen-ic4ej 5 หลายเดือนก่อน +1

    Hmm nếu thế trong MySQL, khi có 2 người cùng update mà chưa commit, vd như em update "Huy -> 1800", anh update "Huy -> 1500" thì lúc đó bảng sẽ lưu trữ cả 2 update mà chưa commit này như thế nào ạ?

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน +2

      2 ông cùng update 1 bản ghi đúng không em.
      Trường hợp đấy thì database sẽ sử dụng cơ chế LOCK.
      Người đầu tiên gõ lệnh UPDATE thì sẽ được thực hiện, ông thứ 2 thì bị LOCK, phải chờ ông đầu tiên update xong (commit hoặc rollback) thì mới được làm tiếp

    • @ThangNguyen-ic4ej
      @ThangNguyen-ic4ej 5 หลายเดือนก่อน

      Up@@tranquochuywecommit Với nếu thế thì rất dễ xảy ra deadlock. Vd như có 2 câu lệnh Update của 2 người khác nhau:
      - Transaction 1:
      "Update bản ghi 1
      Update bản ghi 2"
      - Transaction 2:
      "Update bản ghi 2
      Update bản ghi 1"
      Trường hợp nhiều CCU thì có khả năng ô thứ 1 get dc lock của bản ghi 1, và ô thứ 2 get dc lock của bản ghi 2. Nếu thế thì deadlock xảy ra r mà nhỉ?

    • @HoanDuongVan-kd7ct
      @HoanDuongVan-kd7ct 4 หลายเดือนก่อน

      Đấy cũng là yếu điểm của bọn này so với oracle phải k anh :))

  • @TrongNguyen-yu1sm
    @TrongNguyen-yu1sm 5 หลายเดือนก่อน

    Phân tích chất lượng quá anh ơi, cảm ơn anh

  • @VuKhacDiep084
    @VuKhacDiep084 หลายเดือนก่อน

    Hay thật, mà nhạc to quá nghe khó tập trung dc 🎉

  • @nhatnguyenhuu7822
    @nhatnguyenhuu7822 5 หลายเดือนก่อน

    Em có thắc mắc là khi câu lệnh SQL của em không thay đổi trong các lần chạy tiếp theo, nhưng mà lúc sau em đánh Index trên bảng cần truy vấn, thì việc phân tích chiến lược thực thi có được phân tích lại không ạ? Em cảm ơn!

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      khi em bổ sung các thông tin mới, ví dụ như Index mà em nói, chiến lược thực thi sẽ được cân nhắc, đánh giá lại.
      Tuy nhiên việc lựa chọn vẫn dựa trên Cost ông nào thấp nhất, không phải cứ đánh Index là ngon.
      Chính vì thế, anh em lập trình lúc đánh index xong phải kiểm tra chiến lược thực thi xem câu lệnh nó có dùng được không nhé.

  • @ytnavi-m2h
    @ytnavi-m2h 5 หลายเดือนก่อน

    So sánh thêm vs Oracle đi Huy

  • @BackendNestJs
    @BackendNestJs 5 หลายเดือนก่อน

    em chào anh ạ , mong anh ra thêm video về cách làm mô hình master-slave của postgres , em cảm ơn ạ

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน +1

      okie em, nếu nhiều người cùng cần anh sẽ làm nhé

    • @futhedude4848
      @futhedude4848 5 หลายเดือนก่อน

      @@tranquochuywecommit +1 ạ

  • @HungHoang-di5gh
    @HungHoang-di5gh 4 หลายเดือนก่อน

    Anh ơi không biết anh có thể làm về Apache Cassandra được không ạ

    • @tranquochuywecommit
      @tranquochuywecommit  4 หลายเดือนก่อน

      em mong đợi nội dung nào trong đó?

  • @thanhnamdatabases8277
    @thanhnamdatabases8277 4 หลายเดือนก่อน +1

    chạy 1 query là thế mạnh của thằng này thì thằng kia chẳng yếu thế hơn, dùng 1 query để chứng minh thằng kia không viết lại query thì chịu rồi =))

  • @vuduchong
    @vuduchong 4 หลายเดือนก่อน

    nghe cao thủ khác bọt thật, quá hay.

  • @hoangbon2806
    @hoangbon2806 5 หลายเดือนก่อน

    sao nhóm vote làm về SQL vs Oracle rồi sao lại làm video này trước vậy sếp?

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      Kết quả theo số đông người chọn anh em ah.
      Vote trên nhiều nhóm + TH-cam tab cộng đồng.
      Anh em xem trên tab cộng đồng youtube sẽ thấy đa số anh em chọn PostgreSQL vs MySQL.
      Video sau mình có làm về Oracle vs SQL Server đấy

  • @grabtv4211
    @grabtv4211 5 หลายเดือนก่อน

    A dùng phần mềm gì vẽ đẹp thế ạ ?

  • @mtpcess
    @mtpcess 5 หลายเดือนก่อน

    Có db nào kết hợp xử lý index ngon của mysql với statics sql ngon của postgres không anh

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน +2

      xin giới thiệu anh em: Oracle database

  • @KhoiNguyen--Le
    @KhoiNguyen--Le 5 หลายเดือนก่อน

    kiến thức này là kinh nghiệm xương máu, cám ơn anh Huy sâu sắc

  • @Thit-Rang-Chay-Canh
    @Thit-Rang-Chay-Canh 5 หลายเดือนก่อน

    Dùng cho các hệ thống monitor như Zabbix thì dùng loại nào sẽ phù hợp hơn vậy ae?

    • @dangkiena3
      @dangkiena3 5 หลายเดือนก่อน +1

      Postgresql timescaleDB

    • @Thit-Rang-Chay-Canh
      @Thit-Rang-Chay-Canh 5 หลายเดือนก่อน

      @@dangkiena3 Mới đọc keyword thôi đã thấy sáng rồi, tks bạn!

  • @NhanNguyen-xb5cn
    @NhanNguyen-xb5cn 5 หลายเดือนก่อน

    hehe like + cảm ơn a Huy trước rồi xem

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      woa, quá nhiệt tình luôn. Cảm ơn anh em nhé

  • @trandungguitar3796
    @trandungguitar3796 4 หลายเดือนก่อน

    Ông qua bên thuế làm csdl giúp cái, chứ nhiều ng tồn tại 2 mst mà lâu mới phát hiện ra

    • @tranquochuywecommit
      @tranquochuywecommit  4 หลายเดือนก่อน

      tôi quen anh em quản lý cơ sở dữ liệu bên đấy đấy, anh em có cần tôi kết nối cho không :))

  • @hongchungnguyen9254
    @hongchungnguyen9254 5 หลายเดือนก่อน

    Cơ chế này có đại diện cho sql và nosql ko anh

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      mỗi loại database sẽ có các cơ chế riêng.
      Oracle, MySQL, PostgreSQL, SQL Server tuy là cùng RDBMS nhưng mỗi loại nó có các kiến trúc sẽ khác nhau đôi chút.
      NoSQL thì cũng phải xét kiến trúc riêng anh em ạ

  • @ichngohuy8775
    @ichngohuy8775 4 หลายเดือนก่อน

    Không biết a có chuyên đề về Oracle?

  • @huythai6250
    @huythai6250 5 หลายเดือนก่อน

    Anh có thể làm thêm về Cassandra được không ạ?

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      để anh làm khảo sát xem nhiều anh em cộng đồng cần không, có nhiều thứ muốn làm nên anh sẽ ưu tiên các nội dung nhiều người cần em nhé

    • @huythai6250
      @huythai6250 5 หลายเดือนก่อน

      @@tranquochuywecommit dạ cảm ơn anh đã dành thời gian cân nhắc ạ.

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      @huythai6250 anh vẫn xem tất cả chia sẻ của anh em mà. Cảm ơn anh em vì đã ủng hộ kênh này nhé

    • @huythai6250
      @huythai6250 5 หลายเดือนก่อน

      @@tranquochuywecommit dạ, rất cần nhiều hơn những người có tầm như anh chia sẻ kinh nghiệm ạ 🥰, cảm ơn những chia sẻ của anh rất nhiều

  • @nguyenchitrung5955
    @nguyenchitrung5955 5 หลายเดือนก่อน

    anh Huy làm so sánh giữa sql và nosql đi ạ

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      nosql em thích chọn database nào? Mongodb nhé?

    • @nguyenchitrung5955
      @nguyenchitrung5955 5 หลายเดือนก่อน

      @@tranquochuywecommit ok ạ, à em hỏi thêm là em muốn tìm hiểu sâu hơn về index (sâu như video anh chia sẻ thì tham gia khóa 100x là có anh nhỉ)

  • @nhansoftech
    @nhansoftech 5 หลายเดือนก่อน

    Nói luôn cho đủ bộ a nhờ. thêm SQL Server nữa

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      sắp ra tiếp video oracle và sql server anh em nhé, ngay video kế tiếp

  • @HaTrungPham-zh8ht
    @HaTrungPham-zh8ht 4 หลายเดือนก่อน

    Cảm ơn bạn!

  • @thiphung4995
    @thiphung4995 4 หลายเดือนก่อน

    Cảm ơn anh ạ!

  • @phamtienthanh445
    @phamtienthanh445 5 หลายเดือนก่อน

    cảm ơn bác chia sẻ nhé ạ
    😀

  • @dangquytai8875
    @dangquytai8875 5 หลายเดือนก่อน

    Hay quá thầy ơi

  • @huynhat6252
    @huynhat6252 2 หลายเดือนก่อน

    hay quá

  • @ntphiep
    @ntphiep 5 หลายเดือนก่อน

    rất thiết thực, cam ơn anh

  • @namminh4336
    @namminh4336 5 หลายเดือนก่อน

    So sánh Oracle luôn anh ạ

  • @_DuongMinhLong
    @_DuongMinhLong 5 หลายเดือนก่อน

    :))) phải giỏi và hiểu sâu cỡ này ms đúng là chuyên gia anh ơiii

  • @skybita
    @skybita 5 หลายเดือนก่อน

    Giá trị, cảm ơn anh

  • @huypham2872
    @huypham2872 5 หลายเดือนก่อน

    So sánh Sql vs Oracle đi anh

  • @trunghoangnguyen8798
    @trunghoangnguyen8798 10 วันที่ผ่านมา +1

    Ko hiểu gì cả

  • @some1here0
    @some1here0 4 หลายเดือนก่อน

    nice sharing

  • @phuccom3296
    @phuccom3296 5 หลายเดือนก่อน

    anh làm về oracle đi anh

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      video ngay sau đây có nội dung oracle đó em

  • @thoanguyenthi7135
    @thoanguyenthi7135 3 หลายเดือนก่อน

    Các bạn tải cao cùng làm xao luong khác nhau các bạn

  • @Huynguyen-ew1ep
    @Huynguyen-ew1ep 5 หลายเดือนก่อน

    Video có tiếng cạch cạch khá khó chịu đó anh

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      cảm ơn em đã góp ý, anh sẽ để ý điều chỉnh đợt video tới nhé

  • @Minhnhan89
    @Minhnhan89 หลายเดือนก่อน

    Chào ♥️🌽👍

  • @AnhemtaoMacao
    @AnhemtaoMacao 5 หลายเดือนก่อน

    sinh viên năm 3 xem có sớm quá không ^^

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน +1

      anh có những anh em năm 3 đã tham gia chiến đấu rồi.
      Làm công nghệ không có gì làm sớm nếu tăng công lực cả em ạ.
      Càng biết sớm càng ngon thôi.

  • @futhedude4848
    @futhedude4848 5 หลายเดือนก่อน

    video start: 1:10

  • @quangphongtran3558
    @quangphongtran3558 5 หลายเดือนก่อน

    quá hay

  • @chungtran2059
    @chungtran2059 5 หลายเดือนก่อน

    "My SQL, SQL" tôi nghĩ nên phát âm chính xác hơn

    • @tranquochuywecommit
      @tranquochuywecommit  5 หลายเดือนก่อน

      cảm ơn người anh em đã bỏ qua phần phát âm để ủng hộ nội dung video nhé

    • @n4.nguyenmanhcuong8
      @n4.nguyenmanhcuong8 5 หลายเดือนก่อน

      Mình nghĩ là ko cần thiết. Mình thấy phát âm như vậy dễ nghe hơn

    • @Phamviet008
      @Phamviet008 5 หลายเดือนก่อน

      @@n4.nguyenmanhcuong8làm tech mà nói sai tên công nghệ thì hơi buồn cười ấy

    • @n4.nguyenmanhcuong8
      @n4.nguyenmanhcuong8 5 หลายเดือนก่อน +1

      @@Phamviet008 Chả có gì buồn cười cả bạn ạ. Chúng ta là người Việt, đều nói tiếng Việt, video cũng dành cho người Việt. Mấy cái đấy nói lái sang tiếng Việt cho dễ nghe thì không có vấn đề gì cả bạn ạ.
      giống như bạn nói tiếng Anh với người nước ngoài thì ví dụ tên người. bạn sẽ đọc rõ chữ "Cường", hay sẽ nói lái sang là "Cuong" ?

  • @LongLưuĐạt
    @LongLưuĐạt 4 หลายเดือนก่อน

    chất