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

Lựa chọn công cụ lưu trữ:Aria

Nền tảng MariaDB bao gồm nhiều công cụ lưu trữ khác nhau như các thành phần có thể cắm được của Máy chủ doanh nghiệp MariaDB. Điều này cho phép bạn chọn công cụ lưu trữ phù hợp nhất với khối lượng công việc của một cơ sở dữ liệu hoặc bảng cụ thể.

Công cụ lưu trữ Aria được phát triển như một sự thay thế an toàn khi gặp sự cố cho MyISAM và đã được phát triển tích cực từ năm 2007. Khi Máy chủ MariaDB khởi động lại sau sự cố, Aria khôi phục tất cả các bảng về trạng thái khi bắt đầu câu lệnh hoặc khi bắt đầu của câu lệnh LOCK TABLES cuối cùng.

Công cụ lưu trữ MariaDB

Đề xuất công cụ lưu trữ hiện tại dựa trên khối lượng công việc:

  • Khối lượng công việc nhiều khi đọc:Aria
  • Mục đích chung:InnoDB
  • ACID:InnoDB
  • Khối lượng công việc nhiều khi viết:MyRocks
  • Nén:MyRocks
  • Sharded:Spider
  • Khối lượng công việc phân tích:MariaDB ColumnStore

Tại sao sử dụng Aria cho MariaDB

Trong khi InnoDB là công cụ lưu trữ mặc định cho cơ sở dữ liệu được tạo bằng MariaDB, Aria được sử dụng cho hầu hết các bảng hệ thống nội bộ từ MariaDB Enterprise Server 10.4. Aria có diện tích nhỏ và cho phép sao chép dễ dàng giữa các hệ thống và đặc biệt phù hợp với khối lượng công việc cần đọc. Aria có định dạng lưu trữ dựa trên trang nâng cao cho phép hiệu suất bộ nhớ đệm vượt trội và được tối ưu hóa cho đồng thời.

Trong môi trường thế giới thực, Aria tạo ra kết quả tốt hơn cho các cấu trúc tổng hợp (chẳng hạn như GROUP BY hoặc ORDER BY) phổ biến trong phân tích và xử lý giao dịch. Phân tích và xử lý giao dịch tìm những thứ đơn giản như tổng, tối đa và thống kê. Hầu hết các ứng dụng chủ yếu dựa vào các truy vấn sử dụng các hàm tổng hợp này.
MariaDB sử dụng công cụ lưu trữ Aria cho tất cả các bảng tạm thời trên đĩa nội bộ. Vì các bảng này thường được tạo nội bộ để thực thi các truy vấn GROUP BY và DISTINCT, các loại truy vấn này có thể được hưởng lợi từ hiệu suất của Aria, ngay cả khi bảng được truy vấn sử dụng một công cụ khác.

Công cụ lưu trữ Aria được biên dịch theo mặc định trong MariaDB. Aria được bao gồm trong Máy chủ MariaDB (Doanh nghiệp và Cộng đồng) mà không cần cài đặt hoặc thiết lập thêm.

Những điều cần cân nhắc của Aria

Cách tốt nhất để sử dụng Aria sẽ phụ thuộc vào trường hợp sử dụng, thiết kế bảng, mẫu truy cập (truy vấn SQL), mục tiêu hiệu suất và mục tiêu khôi phục.

Ưu điểm của Aria Nhược điểm của Aria
  • Chèn đồng thời vào cùng một bảng từ nhiều nguồn
  • Tải hàng loạt không hiệu quả
  • Khả năng lưu vào bộ nhớ cache theo trang
  • Khóa mức bảng
  • Được sao lưu hiệu quả bằng MariaDB Enterprise Backup

  • Thiếu hỗ trợ khóa ngoại gốc
  • Định dạng hàng PAGE nâng cao:an toàn với sự cố theo mặc định; các hoạt động; cải thiện tốc độ đáng chú ý cho bộ nhớ đệm dữ liệu, đặc biệt là trên Windows
  • Thiếu hỗ trợ CHÈN BỊ TRÌ HOÃN.
  • Các bảng và chỉ mục an toàn trước sự cố
  • Hạn chế của bộ nhớ đệm:nhiều bộ nhớ đệm chính và phụ thuộc vào bộ nhớ đệm của đĩa hệ điều hành
  • Khôi phục sự cố đến đầu câu lệnh cuối cùng hoặc khóa
  • Chi phí định dạng PAGE:kích thước tệp tối thiểu 16K; lưu trữ của các hàng nhỏ; cùng kích thước trang cho chỉ mục và dữ liệu.
  • CHỈ SỐ TẢI được tối ưu hóa
  • Không hỗ trợ các giao dịch (tức là ROLLBACK và COMMIT)
  • Tương thích với các định dạng MyISAM ROW và PAGE
  • Chi phí thấp
  • Cân nhắc sử dụng Aria:

    • Nếu ứng dụng của bạn thực hiện nhiều tìm kiếm TOÀN VĂN BẢN.
    • Nếu ứng dụng của bạn thực hiện nhiều truy vấn GROUP BY.
    • Nếu ứng dụng của bạn không cần tuân thủ ACID hoặc khóa ngoại.
    • Nếu ứng dụng của bạn hiện đang sử dụng MyISAM và yêu cầu một công cụ nâng cao hơn để cho phép tốc độ tốt hơn, sao lưu và khôi phục sự cố tự động.

    So sánh Hiệu suất

    Đó là một việc để so sánh các truy vấn riêng biệt và một việc khác là xem xét các ví dụ trong thế giới thực. Chúng tôi đã thực hiện một số thử nghiệm so sánh Aria, InnoDB và MyISAM.

    Kết quả hoạt động
    InnoDB Aria MyISAM
    SQL 1 2.389 0,580 0,634
    SQL 2 2.169 0,530 0,598
    Điểm chuẩn đơn giản:Aria vs MyISAM vs InnoDB

    Trong điểm chuẩn đơn giản này, một bảng đã được tạo và có 2 triệu hàng. Các truy vấn GROUP BY và ORDER BY đã được thực hiện và sao chép vào cả ba công cụ lưu trữ thay thế:InnoDB, Aria và MyISAM. Mỗi bài kiểm tra chạy 10 lần, với thời gian trung bình (giây) được ghi lại cho tất cả các bài kiểm tra.

    Thiết lập và các lệnh được sử dụng để kiểm tra:

    INSERT INTO fact VALUES (1,1,'Justin',md5(''), .1);
    INSERT INTO fact SELECT FLOOR(1+ rand()*9999), FLOOR(1 + rand()*499),
    (select name from names where id = 1 + rand() * 4),
    MD5(1+rand()*9999), rand()
    FROM fact;

    Tiếp tục chạy chèn ở trên cho đến khi có khoảng 2 triệu hàng trong bảng.

    MariaDB [test2]> SELECT count(*) from fact;
    +----------+
    | count(*) |
    +----------+
    | 2097152 |
    +----------+
    MariaDB [test2]> SHOW CREATE TABLE fact;
    +-------+-------------------------------
    | Table | Create Table
    +-------+-------------------------------
    | fact | CREATE TABLE `fact` (
    `dim1` int(11) DEFAULT NULL, `dim2` int(11) DEFAULT NULL,
     `name` varchar(20) DEFAULT NULL, `hash` varchar(32) DEFAULT NULL,
     `measure1` double DEFAULT NULL)
    ENGINE=InnoDB DEFAULT CHARSET=utf8 |

    Xác nhận rằng có một tỷ lệ tốt giữa các hàng riêng biệt so với tổng số hàng:

    MariaDB [test2]> SELECT count(distinct (dim1)) from fact;
    +------------------------+
    | count(distinct (dim1)) |
    +------------------------+
    | 9999              	 |
    +------------------------+
    MariaDB [test2]> SELECT count(distinct (dim2)) from fact;
    +------------------------+
    | count(distinct (dim2)) |
    +------------------------+
    | 499                    |
    +------------------------+
    MariaDB [test2]> SELECT count(distinct (name)) from fact;
    +------------------------+
    | count(distinct (name)) |
    +------------------------+
    | 1                      |
    +------------------------+
    

    Aria

    CREATE TABLE `test2`.`fact2` (
     `dim1` INT(11) NULL DEFAULT NULL,
     `dim2` INT(11) NULL DEFAULT NULL,
     `name` VARCHAR(20) NULL DEFAULT NULL,
     `hash` VARCHAR(32) NULL DEFAULT NULL,
     `measure1` DOUBLE NULL DEFAULT NULL )
    ENGINE=ARIA TRANSACTIONAL=1;
    INSERT INTO `test2`.`fact2` (`dim1`, `dim2`, `name`, `hash`, `measure1`) 
    SELECT `dim1`, `dim2`, `name`, `hash`, `measure1` FROM `fact`;
    

    MyISAM

    CREATE TABLE `test2`.`fact3` (
     `dim1` INT(11) NULL DEFAULT NULL,
     `dim2` INT(11) NULL DEFAULT NULL,
     `name` VARCHAR(20) NULL DEFAULT NULL,
     `hash` VARCHAR(32) NULL DEFAULT NULL,
     `measure1` DOUBLE NULL DEFAULT NULL )
    COLLATE='latin1_swedish_ci' ENGINE=MyISAM;
    INSERT INTO `test2`.`fact3` (`dim1`, `dim2`, `name`, `hash`, `measure1`) 
    SELECT `dim1`, `dim2`, `name`, `hash`, `measure1` FROM `fact`;
    

    Kiểm tra 2 sqls khác nhau trên InnoDB, Aria và MyISAM:

    - câu vuông 1:

    SELECT dim1, dim2 from fact group by dim1 order by dim1; 
    -- 9999 rows in set

    - câu 2:

    SELECT dim1, dim2 from fact group by dim2 order by dim2; 
    -- 499 rows in set

    Bản tóm tắt điểm chuẩn

    Thử nghiệm cho thấy Aria nhanh hơn nhiều ở cấp độ GROUP BY so với InnoDB hoặc MyISAM. Aria nhanh hơn một chút so với MyISAM và đảm bảo một môi trường an toàn khi va chạm. Các bài kiểm tra hiệu suất cho thấy Aria nhanh hơn 4 lần so với InnoDB. Do sự khác biệt trong các trường hợp sử dụng, mỗi trường hợp phải trải qua thử nghiệm trong Máy chủ doanh nghiệp MariaDB bằng cách sử dụng cả Aria và InnoDB (hoặc một trường hợp khác, tùy theo nhu cầu).

    Tóm tắt

    Tùy thuộc vào khối lượng công việc của bạn, Aria có thể cung cấp các lợi thế về hiệu suất. Bởi vì nó được bao gồm trong Máy chủ MariaDB và có thể được áp dụng cho mỗi cơ sở dữ liệu hoặc mỗi bảng (ENGINE =ARIA), bạn có thể kiểm tra hiệu suất cho khối lượng công việc cụ thể của mình mà không tốn thêm chi phí và rất ít nỗ lực bổ sung – chỉ cần cắm vào và thử.

    Để biết thêm về công cụ lưu trữ và kiến ​​trúc lưu trữ, hãy truy cập công cụ lưu trữ được tối ưu hóa khối lượng công việc.


    1. Database
    2.   
    3. Mysql
    4.   
    5. Oracle
    6.   
    7. Sqlserver
    8.   
    9. PostgreSQL
    10.   
    11. Access
    12.   
    13. SQLite
    14.   
    15. MariaDB
    1. Điều chỉnh Hiệu suất Cơ sở dữ liệu cho MariaDB

    2. 6 cách để thêm một năm vào một ngày trong MariaDB

    3. 4 cách để tìm hàng có chứa chữ hoa trong MariaDB

    4. 3 cách lấy tên ngày cho ngày trong MariaDB

    5. Cách MONTHNAME () hoạt động trong MariaDB