hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • MySQL
Storage Engines/table types (công cụ lưu trữ) trong MySQL

Storage Engines/table types (công cụ lưu trữ) trong MySQL

  • 22-03-2023
  • Toanngo92
  • 0 Comments

Storage engine hay chúng ta có thể dịch hiểu nôm na là kiểu bảng là cách mà MySQL lưu trữ dữ liệu trên đĩa cứng. Mỗi database sẽ được MySQL lưu dưới dạng thư mục con của thư mục data nằm trong thư mục MySQL . Khi tạo bảng, MySQL sẽ tạo ra một file có tên trùng với tên bảng đó và có đuôi file định dạng .frm ở trong thư mục database. Mỗi loại có một ưu điểm và nhược điểm khác nhau, điều này rất quan trọng khi triển khai ứng dụng lớn, nếu chúng ta hiểu và tận dụng được các ưu điểm đó thì ứng dụng của sẽ thực sự rất tối ưu từ hiệu năng cho tới kích thước cơ sở dữ liệu.

Mục lục

  • Các Storage Engine trong MySQL
    • MyISAM
    • InnoDB
    • MERGE
    • Memory
    • Archive
    • CSV
    • FEDERATED

Các Storage Engine trong MySQL

MyISAM

MyISAM là phần mở rộng cho công cụ lưu trữ ISAM cũ, các bảng được lưu trữ dưới dạng MyISAM được tối ưu hóa cho tốc độ nén. Kích thước của MyISAM có thẻ lên tới 256TB, rất là lớn phải không các bạn. Ngoài ra bảng kiểu MyISAM có thể được nén và chỉ đọc để tăng tính truy vấn lấy dữ liệu. Lúc MYSQL khởi động sẽ kiểm tra các bảng có kiểu MyISAM nếu bị lỗi thì nó sẽ fix lôi luôn, nên nếu ban lưu trữ cách này sẽ không an toàn.

Đặc điểm:

  • Chỉ có thể đọc table đồng thời mà không thể ghi đồng thời
  • Tự sữa chữa và phục hồi dữ liệu tốt sau khi hệ thống bị crash.
  • Hỗ trợ tìm kiếm full-text index.
  • Tăng tốc độ ghi nhờ không ghi dữ liệu vào ổ cứng ngay mà ghi vào buffer trên RAM trước, sau một khoảng thời gian mới ghi vào ổ cứng.
  • Hỗ trợ nén dữ liệu giúp tăng tốc độ đọc dữ liệu nhưng dữ liệu sau khi nén không thể cập nhật được.

Thông thường các bảng cần truy vấn nhanh như bài viết, danh mục, sản phẩm, … chúng ta sử dụng có thể sử dụng engine MyISAM để cải thiện tốc độ truy vấn. Các phiên bản bé hơn 5.5 thì MyISAM là engine bảng mặc định khi bạn tạo mới một bảng , kể từ bản 5.5 trở đi thì mặc định nó lấy kiểu InnoDB.

InnoDB

Các bảng sử dụng engine InnoDB có đầy đủ các tính năng ACID-compliant và transaction và nó cũng được tối ưu hóa hiệu năng. Bảng InnorDB hỗ trợ khóa ngoại (Foreign Key), commit, rollback trong transaction. Kích thước của InnoDB có thể lên tới 64TB, tuy nhiên so sánh thì vẫn nhỏ hơn so với MyISAM

Đặc điểm

  • Có khả năng phục hồi, sửa chữa tốt.
  • Là engine phức tạp nhất trong các engine của MySQL.
  • Hỗ trợ MVCC (Multiversion Concurrency Control) do đó bảng có thể đọc và ghi đồng thời.
  • Sử dụng clustered index do đó hiệu năng tìm kiếm theo primary key rất cao.
  • Lưu dữ liệu trên 1 file (thuật ngữ gọi là tablespace).
  • Hỗ trợ transaction.

Cũng như MyISAM lúc MySQL khởi động nó cũng kiểm tra các table nếu có lỗi thì sẽ báo hoặc tự fix

MERGE

Bảng MERGE là bảng ảo, là sự kết hợp của nhiều bảng MyISAM có cấu trúc tương tự và đưa chúng vào một bảng duy nhất, chính vì vậy kiểu MERGE ta có thể hiểu nó có quy tắc giống như MyISAM . Các bảng MERGE không có indexes riêng của mình mà nó sử dụng indexes của các bảng con.

Sử dụng bảng MERGE bạn có thể tăng tốc độ hiệu suất trong truy vấn tham gia nhiều bảng. MYSQL chỉ cho phép bạn thực hiện các thao tác SELECT, INSERT, UPDATE, DELETE trên bảng đó, nếu bạn DROP một table nằm trong danh sách table của bảng MERGE thì chỉ có các đặc điểm riêng của nó bị loại bỏ và các bảng bên dưới sẽ không bị ảnh hưởng.

Memory

Bảng memory được lưu trữ trong bộ nhớ và sử dụng chỉ số băm để có được tốc độ nhanh hơn các bảng MyISAM. Vòng đời sống của dữ liệu phụ thuộc vào thời gian sống của Database Server. Ta có thể hiểu store engine memory giống như bộ nhớ HEAP.

Archive

Archive là engine cho phép bạn lưu trữ số lượng lớn các bản ghi mà mục đích chỉ để lưu trữ và được chuyển sang định dạng nén để giảm bớt không gian lưu trữ. Nó sử dụng thư viện zlib để nén dữ liệu.
Các bảng lưu trữ chỉ cho phép thực hiện hai thao tác là INSERT và SELECT và nó không hỗ trợ chỉ mục indexes, chính vì vậy khi bạn thực hiện lệnh select nó sẽ quét toàn bộ bảng (table scan) nên tốc độ sẽ chậm hơn,tuy nhiên có ưu điểm là giảm được kích thước lưu trữ.

CSV

Trong MYSQL thì với kiểu này nó sẽ lưu các trường dữ liệu sẽ được ngăn cách nhau bởi dấu phẩy, đây cũng là cách lưu trữ rất giống với NO-SQL.

CSV table không hỗ trợ dữ liệu NULL và khi bạn truy vấn đọc (select) thì nó sẽ quét toàn bộ bảng (table scan) giống như Archive.

FEDERATED

FEDERATED storage engine cho phép bạn quản lý dữ liệu máy chủ từ xa mà không cần sử dụng cluster. Các bảng Federated local sẽ không có dữ liệu mà khi bạn truy vấn dữ liệu thì dữ liệu sẽ được kéo về bảng này.

Kiểm tra MySQL có hỗ trợ những engine nào, sử dụng lệnh:

mysql> SHOW ENGINES;

Trong thực tế, 2 engine chủ yếu sử dụng là innoDB và MyISAM, tuy nhiên, tùy bối cảnh cụ thể, chúng ta có thể lựa chọn engine để lưu trữ dữ liệu một cách hợp lý.

Bài viết liên quan:

Data Types (kiểu dữ liệu) trong MySQL
Khởi tạo và quản trị database trong MySQL
Phân loại các kiểu câu lệnh SQL trong MySQL
Cài đặt và sử dụng Mysql Server Mac Os

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

2. PHÂN TÍCH VÀ ĐẶC TẢ HỆ THỐNG

1. TỔNG QUAN KIẾN THỨC THỰC HÀNH TRIỂN KHAI DỰ ÁN CÔNG NGHỆ THÔNG TIN

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền

Mẫu prompt tạo mô tả chi tiết bối cảnh

Một số cải tiến trong ASP.NET Core, Razor Page, Model Binding, Gabbage collection

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×