Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL so với MariaDB

MySQL so với MariaDB

Câu chuyện trở lại của MySQL và MariaDB

MySQL MariaDB có chung một số lịch sử chung, cả hai đều được đặt tên theo hai con gái của nhà phát triển Michael Widenius, My và Maria. MySQL được tạo ra vào năm 1995 bởi một công ty phần mềm Thụy Điển, MySQL AB . Nó trở nên phổ biến trong những năm qua và trở thành tiêu chuẩn cho hệ quản trị cơ sở dữ liệu quan hệ nguồn mở. Năm 2008, Sun mua MySQL AB (và cuối cùng là MySQL) với giá 1 tỷ đô la. Không lâu sau khi Sun được Oracle mua vào tháng 4 năm 2009. Tại thời điểm này, Oracle, một hệ thống cơ sở dữ liệu cạnh tranh, đã trở thành chủ sở hữu của MySQL. Điều này làm phiền các nhà phát triển ban đầu khi họ cảm thấy tương lai của MySQL đang gặp nguy hiểm như thế nào. Tuân theo các quy tắc của mã nguồn mở, họ quyết định "phân tách" MySQL và tạo MariaDB. Và bạn đã có nó, MySQL và MariaDB chia sẻ một lịch sử!

Chúng tôi có một hướng dẫn tuyệt vời về cách cài đặt MariaDB để thay thế MySQL trong WHM.

Phiên bản sao chép MySQL và MariaDB

Slave ↓ Master → MariaDB-5.5 MariaDB-10.0 MariaDB-10.1 MariaDB-10.2 MySQL-5.6 MySQL-5.7 MySQL-8.0
MariaDB-5.5 Được rồi Không Không Không Không Không Không
MariaDB-10.0 Được rồi Được rồi Được rồi
MariaDB-10.1 Được rồi Được rồi Được rồi Được rồi
MariaDB-10.2 Được rồi Được rồi Được rồi Được rồi Được rồi Được rồi

So sánh tính năng của MySQL và MariaDB

Nhiều công cụ lưu trữ hơn

MariaDB chứa các công cụ lưu trữ tiêu chuẩn MyISAM, BLACKHOLE, CSV, MEMORY, ARCHIVE và MERGE. Nó cũng bao gồm một số công cụ lưu trữ ít phổ biến hơn như;

  • Cassandra (MariaDB 10.0)
  • Nhện (MariaDB 10.0+)
  • SEQUENCE (MariaDB 10.0+)
  • CONNECT (MariaDB 10.0+)
  • TokuDB (MariaDB 5.5+)
  • SphinxSE (MariaDB 5.2+)
  • OQGRAPH (Không có trong MariaDB 5.5)
  • FederatedX (Thay thế cho Federated)
  • Aria (thay thế MyISAM với bộ nhớ đệm được cải thiện)
  • MyRocks (công cụ lưu trữ MariaDB 10.2 với tính năng nén nâng cao)
  • ColumnStore (một công cụ lưu trữ theo định hướng cột được tối ưu hóa để lưu trữ dữ liệu)

Cải tiến tốc độ

MariaDB có nhiều cải tiến được cải thiện so với MySQL khi so sánh tính năng Trình tối ưu hóa:

Tính năng MariaDB 5.3 / 5.5 MariaDB 10.0 MySQL 5.5 MySQL 5.6
Tối ưu hóa quyền truy cập đĩa
Lệnh kéo xuống điều kiện lập chỉ mục (ICP) -
Đọc nhiều phạm vi quét đĩa (DS-MRR) -
DS-MRR với truy xuất theo thứ tự Khóa - -
Index_merge / Sort_intersection - -
Lựa chọn phạm vi dựa trên chi phí so với index_merge - -
ĐẶT HÀNG BỞI… LIMIT - -
Sử dụng khóa chính mở rộng (ẩn) cho innodb / xtradb CÓ (5.5) - -
Tham gia tối ưu hóa
Truy cập khóa theo đợt (BKA) -
Tham gia băm khối - -
Người dùng đặt giới hạn bộ nhớ trên tất cả các bộ đệm tham gia - -
Áp dụng điều kiện BẬT bảng bên ngoài sớm - -
Đã thử nghiệm sớm các điều kiện từ chối cho NULL - -
Tối ưu hóa truy vấn con
Còn tồn tại
Bán tham gia -
Vật chất hóa -
Nguyên liệu hóa không nhận biết được - -
Lựa chọn chi phí nguyên liệu hóa so với hiện hữu -
Bộ nhớ đệm truy vấn con - -
Giải thích nhanh với các truy vấn con - -
TỒN TẠI - - -
Tối ưu hóa cho các bảng / chế độ xem dẫn xuất
Quá trình thực hiện hóa các bảng dẫn xuất / chế độ xem cụ thể hóa bị trì hoãn -
GIẢI THÍCH tức thì cho các bảng dẫn xuất -
Bảng gốc có tối ưu hóa các phím -
Trường của dạng xem có thể hợp nhất và bảng dẫn xuất được sử dụng trong tối ưu hóa bằng nhau - -
Kiểm soát thực thi
LIMIT ROWS EXAMINED rows_limit CÓ (5.5) - -
Kiểm soát trình tối ưu hóa (công tắc trình tối ưu hóa)
Kiểm soát có hệ thống tất cả các chiến lược của trình tối ưu hóa - một phần
GIẢI THÍCH cải tiến
Giải thích cho XÓA, CHÈN, THAY THẾ và CẬP NHẬT - Một phần -
GIẢI THÍCH ở định dạng JSON - - -
GIẢI THÍCH chi tiết và nhất quán hơn cho các truy vấn con - -
Theo dõi trình tối ưu hóa
Theo dõi trình tối ưu hóa - - -

  • Sao chép song song - mới trong 10.0; diễn ra trong ba phần:các sự kiện sao chép được đọc bởi luồng IO và xếp hàng đợi trong nhật ký chuyển tiếp, được tìm nạp riêng bởi luồng SQL từ nhật ký chuyển tiếp và mỗi sự kiện được áp dụng trên máy chủ sao chép các thay đổi trên bản chính.
  • Các cải tiến về hiệu suất bao gồm hệ thống con IO không đồng bộ InnoDB tốt hơn trên Windows.
  • Chỉ mục cho công cụ MEMORY (HEAP) nhanh hơn. Các bản sửa lỗi mới nhất đã được áp dụng trong MariaDB 5.5 và MySQL 5.7.
  • Bộ đệm ẩn khóa được phân đoạn cho MyISAM đã được thêm vào MariaDB 5.2. Điều này đã cải thiện hiệu suất trong bảng MyISAM lên đến 4 lần.
  • Kể từ phiên bản 10.0.13, kích thước băm có thể điều chỉnh cho MyISAM và Aria cải thiện thời gian tắt nếu bạn đang sử dụng nhiều bảng MyISAM / Aria có khóa bị trễ.
  • Với BẢNG CHECKSUM sử dụng tùy chọn NHANH, tốc độ được cải thiện.
  • Hiệu suất đã được cải thiện với các chuyển đổi tập hợp ký tự và loại bỏ các chuyển đổi (khi chúng không cần thiết). Tốc độ cải thiện tổng thể khoảng 1-5% nhưng có thể nhanh hơn với các bộ kết quả lớn.
  • Nhóm luồng trong MariaDB 5.1 / MariaDB 5.5 cho phép MariaDB chạy với hơn 200.000 kết nối, dẫn đến cải thiện tốc độ khi sử dụng nhiều kết nối.
  • Các cải tiến kết nối máy khách đã được thêm vào MariaDB 10.1 và MariaDB 10.2.
  • Một số cải tiến đối với mã DBUG trong MariaDB giúp mã chạy nhanh hơn với bộ gỡ lỗi được biên dịch trong nhưng không được sử dụng.
  • Sử dụng công cụ lưu trữ Aria bằng các bảng tạm thời bên trong cho phép cải thiện hiệu suất.
  • Bộ thử nghiệm chạy nhanh hơn ngay cả với danh sách thử nghiệm mở rộng.

Các tính năng và tiện ích mở rộng mới

Kiểm tra tốt hơn

MariaDB chứa nhiều thử nghiệm trong bộ thử nghiệm hơn MySQL. Không hợp lệ và bất kỳ bài kiểm tra không cần thiết nào đã bị loại bỏ. Các vấn đề với bộ thử nghiệm đã được khắc phục.

Ít lỗi hơn

Hiện tại, cộng đồng MariaDB đang cảnh báo và nỗ lực sửa lỗi nhanh nhất, triệt để nhất có thể. Ngoài ra, các cảnh báo của trình biên dịch cũng đã được giảm bớt do việc giảm lỗi.

Nguồn mở

Tất cả mã nguồn cho MariaDB được phát hành theo GPL, LGPL hoặc BSD. Trong khi MySQL có các mô-đun nguồn đóng trong Phiên bản Doanh nghiệp của họ, MariaDB không có bất kỳ mô-đun nguồn đóng nào. MariaDB bao gồm tất cả các tính năng nguồn đóng có trong MySQL 5.5 Enterprise Edition trong phiên bản nguồn mở của chúng. MariaDB bao gồm các trường hợp thử nghiệm cho tất cả các lỗi đã sửa mới. MySQL không cung cấp các trường hợp kiểm tra cho các lỗi được sửa trong MySQL 5.5. MariaDB công khai tất cả các kế hoạch phát triển trong tương lai, bao gồm cả các lỗi và bản sửa lỗi của chúng. MariaDB có một cộng đồng lớn và cộng đồng các nhà phát triển đó bao gồm nhiều người đóng góp trong khi tất cả các cam kết về MySQL dường như là từ các nhân viên của Oracle. Thư viện máy khách MySQL được phát hành theo giấy phép GPL cấm liên kết với các ứng dụng nguồn đóng. Ngược lại, MariaDB cấp phép cho các thư viện máy khách theo giấy phép LGPL cho phép liên kết với phần mềm nguồn đóng.

Vấn đề tương thích giữa MariaDB và MySQL

MariaDB được thiết kế để thay thế cho MySQL và là một nhánh của cơ sở mã MySQL ban đầu. Điều này có nghĩa là khi chuyển từ MySQL sang MariaDB, đó là một quá trình tương đối đơn giản. Bạn chỉ cần gỡ cài đặt MySQL và cài đặt MariaDB. Vì nó là một sự thay thế thả xuống nên không cần phải chuyển đổi bất kỳ dữ liệu nào. Các nhà phát triển của MariaDB thực hiện hợp nhất mã MySQL hàng tháng để đảm bảo chúng vẫn tương thích. Có những điểm không tương thích khác nhau giữa các phiên bản của MySQL và MariaDB mặc dù các phiên bản được thiết kế để tương thích theo số phiên bản tương ứng của chúng (ví dụ:MySQL 5.1 -> MariaDB 5.1 &MySQL 5.5 -> MariaDB 5.5).

Sự không tương thích giữa MariaDB 10.0 &MariaDB 5.5 / MySQL 5.5

  • Cú pháp SET OPTION không được chấp nhận trong MariaDB 10.0 và MySQL 5.6. Chỉ sử dụng SET.

Sự không tương thích giữa MariaDB 10.0 và MySQL 5.6

  • Tất cả các tệp nhị phân MySQL (MySQLd, myisamchk, v.v.) đưa ra cảnh báo nếu một người sử dụng tiền tố của một tùy chọn (chẳng hạn như –big-table thay vì –big-table). Các mã nhị phân MariaDB hoạt động theo cách giống như hầu hết các lệnh Unix khác và không đưa ra cảnh báo khi sử dụng các tiền tố duy nhất.
  • MariaDB GTID không tương thích với MySQL 5.6. Điều này có nghĩa là người ta không thể có MySQL 5.6 làm nô lệ cho MariaDB 10.0. Tuy nhiên, MariaDB 10.0 có thể là nô lệ của MySQL 5.6 hoặc bất kỳ phiên bản MySQL / MariaDB nào trước đó.
  • Bản sao đa nguồn MariaDB 10.0 không được hỗ trợ trong MySQL 5.6.
  • Các cột động MariaDB 10.0 không được MySQL 5.6 hỗ trợ.
  • Để làm cho CREATE TABLE… SELECT hoạt động theo cách tương tự trong sao chép dựa trên câu lệnh và dựa trên hàng, nó được thực thi theo mặc định dưới dạng CREATE OR REPLACE TABLE trên nô lệ. Một lợi ích của việc này là nếu nô lệ chết giữa lúc CREATE… SELECT thì nó sẽ có thể tiếp tục.
  • Người ta có thể sử dụng biến chế độ slave-ddl-execute-mode để chỉ định cách tạo BẢNG TẠO BẢNG và BẢNG HIỆU QUẢ.
  • Xem thêm bảng phân tích chi tiết về sự khác biệt của biến Hệ thống giữa MariaDB 10.0 và MySQL 5.6.
  • MySQL 5.6 được kích hoạt giản đồ hiệu suất theo mặc định. Vì lý do hiệu suất, MariaDB 10.0 đã tắt nó theo mặc định. Bạn có thể kích hoạt nó bằng cách khởi động MySQLd với tùy chọn –performance-schema.
  • MariaDB 10.0 không hỗ trợ plugin MySQL Memcached.
  • Không thể sử dụng người dùng được tạo bằng thuật toán mật khẩu SHA256 của MySQL trong MariaDB 10.0.
  • MariaDB 10.0 không hỗ trợ sao chép chậm - MDEV-7145.

Sự không tương thích giữa MariaDB 10.1 và MySQL 5.7

  • MariaDB 10.1 không hỗ trợ JSON của MySQL 5.7.
  • Mã hóa InnoDB của MariaDB 10.1 được triển khai khác với mã hóa InnoDB của MySQL 5.7.
  • MariaDB 10.1 không hỗ trợ các plugin phân tích cú pháp toàn văn bản ngram và MeCab - MDEV-10267, MDEV-10268.
  • MariaDB 10.1 không hỗ trợ nhiều trình kích hoạt cho một bảng - MDEV-6112.
  • MariaDB 10.1 không hỗ trợ CREATE TABLESPACE cho InnoDB.

Sự không tương thích giữa MariaDB 10.2 và MySQL 5.7

  • Sự khác biệt về biến hệ thống giữa MariaDB 10.2 và MySQL 5.7.
  • Sự khác biệt về chức năng giữa MariaDB 10.2 và MySQL 5.7.
  • Nhiều trình kích hoạt trên mỗi bảng đã được thêm vào 10.2
  • Mã hóa InnoDB của MariaDB được triển khai khác với mã hóa InnoDB của MySQL 5.7.
  • MariaDB lưu trữ JSON dưới dạng văn bản thực, không phải ở định dạng nhị phân như MySQL. Lý do là các hàm JSON của chúng tôi nhanh hơn nhiều so với MySQL, vì vậy chúng tôi không cần thấy nhu cầu lưu trữ mọi thứ ở định dạng nhị phân vì nó làm tăng thêm nhiều độ phức tạp khi thao tác với các đối tượng JSON.
  • MariaDB 10.2 không hỗ trợ các plugin phân tích cú pháp toàn văn bản ngram và MeCab - MDEV-10267, MDEV-10268.
  • MariaDB 10.2 không hỗ trợ plugin MySQL X.
  • MariaDB 10.2 không hỗ trợ các không gian bảng chung MySQL.
  • Ngoài ra, hãy xem Sự không tương thích giữa MariaDB 10.1 và MySQL 5.7.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Sửa lỗi - Mục nhập trùng lặp lỗi cơ sở dữ liệu WordPress cho khóa CHÍNH cho truy vấn CHÈN VÀO wp_options

  2. Cách kiểm tra trạng thái máy chủ trong MySQL Workbench bằng GUI

  3. LỖI 1067 (42000):Giá trị mặc định không hợp lệ cho 'create_at'

  4. MySQL Workbench Alternatives - ClusterControl Database User Management

  5. Cách Dừng / Khởi động MySQL bằng MySQL Workbench