Share This
//Giới Thiệu Một Số Storage Engine Của My SQL

Giới Thiệu Một Số Storage Engine Của My SQL

Giới thiệu

MySQL là một trong những hệ thống cơ sở dữ liệu quan hệ phổ biến số một thế giới, được sử dụng bởi hầu hết các website lớn. Do vậy, việc nắm vững MySQL là yêu cầu không thể thiếu đối với một webmaster.

Kiến trúc logic của MySQL nhìn tổng quan có thể được mô tả như hình dưới đây:

Ta có thể thấy MySQL có các component cơ bản như ở dưới đây:

  • Connection/thread handling.
  • Query cache.
  • Parser.
  • Optimizer.
  • Storage engine.

Việc nắm rõ từng chức năng và nhiệm vụ của từng thành phần là điều không thể thiếu trong việc sử dụng MySQL một cách hiệu quả. Bài viết sẽ tập trung giới thiệu về thành phần dưới cùng trong mô hình trên: Storage engine (Máy lưu trữ).

Storage Engine (Máy lưu trữ)

Storage Engine thực chất là cách MySQL lưu trữ dữ liệu trên đĩa cứng. MySQL lưu mỗi database như là một thư mục con nằm dưới thư mục data. Khi một table được tạo ra, MySQL sẽ lưu định nghĩa bảng ở file đuôi .frm và tên trùng với tên của bảng được tạo. Việc quản lý định nghĩa bảng là nhiệm vụ của MySQL server, dù rằng mỗi storage engine sẽ lưu trữ và đánh chỉ mục (index) dữ liệu khác nhau.

Ví dụ: mình chỉ định –datadir là /usr/local/mysql/data và định nghĩa bảng users trong database tên là test như sau

create table users (
    id int not null auto_increment, 
    name varchar(30), 
    password varchar(20), 
    primary key(id)
);

thì trong thư mục /usr/local/mysql/data sẽ có thư mục con là test, và dưới test sẽ có các file:

-rw-rw----  1 _mysql  wheel   8624  5  7 17:35 users.frm
-rw-rw----  1 _mysql  wheel  98304  5  7 17:35 users.ibd

Để xem loại storage engine của bảng hiện tại, bạn có thể dùng câu lệnh SHOW DATABASE STATUS:

mysql> show table status like 'users' \G
*************************** 1. row ***************************
           Name: users
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 2
 Avg_row_length: 8192
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
 Auto_increment: 3
    Create_time: 2013-05-07 17:35:09
    Update_time: NULL
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options:
        Comment:
1 row in set (0.01 sec)

Cụ thể trong trường hợp này: storage engine : innodb loại row : compact Số lượng row dữ liệu : 2 giá trị auto increment tiếp theo: 3 …

Tổng quan các engine

1. MyISAM engine

Đặc điểm:
  • Full-text indexing.
  • Compression.
  • Spatial functions (GIS).
  • Không hỗ trợ transactions.
  • Không hỗ trợ row-level lock.
Lưu trữ:

MyISAM lưu mỗi bảng dữ liệu trên 2 file: .MYD cho dữ liệu và .MYI cho chỉ mục. Row có 2 loại: dynamic và static (tuỳ thuộc bạn có dữ liệu thay đổi độ dài hay không). Số lượng row tối đa có thể lưu trữ bị giới hạn bởi hệ điều hành, dung lượng đĩa cứng. MyISAM mặc định sử dụng con trỏ độ dài 6 bytes để trỏ tới bản ghi dữ liệu, do vậy giới hạn kích thước dữ liệu xuống 256TB.

Tính năng:
  • MyISAM lock toàn bộ table. User (MySQL server) chiếm shared-lock khi đọc và chiếm exclusive-lock khi ghi. Tuy vậy, việc đọc ghi có thể diễn ra đồng thời!
  • MyISAM có khả năng tự sửa chữa và phục hồi dữ liệu sau khi hệ thống crashed.
  • Dùng command check table/repair table để kiểm tra lỗi và phục hồi sau khi bị lỗi.
  • MyISAM có thể đánh chỉ mục full-text, hỗ trợ tìm kiếm full-text.
  • MyISAM không ghi dữ liệu ngay vào ổ đĩa cứng, mà ghi vào 1 buffer trên memory (và chỉ ghi vào đĩa cứng sau 1 khoảng thời gian), do đó tăng tốc độ ghi. Tuy vậy, sau khi server crash, ta cần phải phục hồi dữ liệu bị hư hỏng bằng myisamchk.
  • MyISAM hỗ trợ nén dữ liệu, hỗ trợ tăng tốc độ đọc dữ liệu. Mặc dù vậy dữ liệu sau khi nén không thể cập nhật được.

2. InnoDB engine

Đặc điểm:
  • Là engine phức tạp nhất trong các engine của MySQL.
  • Hỗ trợ transactions.
  • Hỗ trợ phục hồi, sửa chữa tốt.
Lưu trữ:

InnoDB lưu dữ liệu trên 1 file (thuật ngữ gọi là tablespace).

Tính năng:
  • InnoDB hỗ trợ MVCC (Multiversion Concurrency Control) để cải thiện việc truy cập đồng thời và hỗ trợ chiến thuật next-key locking.
  • InnoDB được xây dựng dựa trên clustered index, do đó việc tìm kiếm theo primary key có hiệu năng rất cao. InnoDB không hỗ trợ sắp xếp index do vậy việc thay đổi cấu trúc bảng sẽ dẫn tới toàn bộ dữ liệu phải được đánh chỉ mục từ đầu (CHẬM với những bảng lớn).

3. Memory engine

Đặc điểm:
  • Còn được gọi là HEAP tables.
Lưu trữ:

Tất cả dữ liệu đều nằm trên memory.

Tính năng:
  • Sau khi server restart, cấu trúc bảng được bảo toàn, dữ liệu bị mất hết.
  • Memory engine sử dụng HASH index nên rất nhanh cho query lookup.
  • Memory engine dùng table-level locking do vậy tính concurrency không cao.

4. Archive engine

Đặc điểm
  • Chỉ hỗ trợ Insert và Select.
  • Không đánh chỉ mục.
  • Dữ liệu được buffer và nén bằng zlib nên tốn ít I/O, tốc độ ghi do đó cao.
Tính năng:
  • Tốc độ ghi cao, phù hợp cho ứng dụng log.

5. CSV engine

Đặc điểm:
  • Coi file CSV như là 1 table.
  • Không hỗ trợ đánh chỉ mục.
Tính năng:
  • Nếu bài toán là trích xuất thông tin từ file CSV và ghi vào cơ sở dữ liệu, đồng thời cần kết quả CSV ngay từ DB, engine này có vẻ thích hợp.

6. Falcon engine

Đặc điểm:
  • Được thiết kế cho phần cứng hiện đại: server 64 bit, bộ nhớ “thênh thang”.
  • Vẫn còn khá mới, chưa có nhiều usercase.

7. Maria engine (Cơ sở dữ liệu liên quan: MariaDB)

Đặc điểm:
  • Được thiết kế bởi những chiến tướng dày dạn kinh nghiệm của MySQL, với mục đích thay thế MyISAM.
  • Hỗ trợ transactions theo lựa chọn.
  • Khôi phục lỗi.
  • Row-level locking và MVCC.
  • Hỗ trợ BLOB tốt hơn.

Tiêu chí lựa chọn engine

  • Transactions: Nếu ứng dụng yêu cầu transactions, InnoDB là lựa chọn duy nhất. Nếu không yêu cầu transactions, MyISAM là lựa chọn tốt.
  • Concurrency: Nếu yêu cầu chịu tải cao và không cần thiết transactions, MyISAM là lựa chọn số 1.
  • Sao lưu: Các engine đều phần nào hỗ trợ sao lưu. Ngoài ra ta cần hỗ trợ sao lưu trên cả quan điểm thiết kế hệ thống. Ví dụ: bạn thiết kế database server gồm master và slave, master yêu cần transaction nên dùng innodb, slave cần sao lưu và đọc nên có thể dùng MyISAM. Cơ chế đồng bộ master-slave sẽ giúp bạn quản lý sự khác nhau giữa các engine nhưng đảm bảo tính sao lưu. Tiêu chí này có trọng số nhỏ.
  • Phục hồi sau crash: MyISAM có khả năng phục hồi sau crash kém hơn InnoDB.
  • Tính năng theo yêu cầu hệ thống: Nếu yêu cầu là logging, MyISAM hoặc Archive là lựa chọn hợp lý. Nếu cần lưu trực tiếp CSV, CSV engine là lựa chọn đáng cân nhắc. Nếu ứng dụng không thay đổi dữ liệu mấy (ví dụ cơ sở dữ liệu sách), MyISAM và tính năng nén là lựa chọn phù hợp.

Kết luận

Bài viết này đã giới thiệu tổng quan về storage engine, một thành phần quan trọng của hệ thống cơ sở dữ liệu. Một số engine tiêu biểu và tính năng đặc điểm cũng được đưa ra. Tiêu chí chọn lựa mỗi loại engine cũng được giới thiệu.

Hy vọng qua bài viết, bạn có cái nhìn tổng quan về database storate engine nói chung, và MySQL storage engine nói riêng, đồng thời hiểu được tầm quan trọng của việc chọn lựa storage engine.

Nguồn: ktmt.github.io


ỨNG TUYỂN






    Leave a Reply

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

    Chế độ phúc lợi

    CHÍNH SÁCH LƯƠNG & THƯỞNG

    Thấu hiểu tâm tư nguyện vọng của nhân viên, công ty Rivercrane Việt Nam đặc biệt thiết lập chế độ xét tăng lương định kỳ 2lần/năm. Xét đánh giá vào tháng 06 và tháng 12 hàng năm và thay đổi lương vào tháng 01 và tháng 07 hàng năm. Ngoài ra, nhân viên còn được thưởng thành tích định kỳ cho các cá nhân xuất sắc trong tháng, năm.

    CHẾ ĐỘ ĐÀO TẠO TẠI NHẬT

    Luôn luôn mong muốn các kỹ sư và nhân viên trong công ty có cái nhìn toàn diện về lập trình những mảng kỹ thuật trên thế giới, công ty Rivercrane Việt Nam quyết định chế độ 3 tháng 1 lần đưa nhân viên đi học tập tại Nhật. Các bạn kỹ sư hoàn toàn đều có thể quyết định khả năng phát triển bản thân theo hướng kỹ thuật hoặc theo hướng quản lý.

    CHẾ ĐỘ ĐI DU LỊCH HÀNG NĂM

    Không chỉ đưa đến cho nhân viên những công việc thử thách thể hiện bản thân, công ty Rivercrane Việt Nam muốn nhân viên luôn thích thú khi đến với những chuyến hành trình thú vị hàng năm. Những buổi tiệc Gala Dinner sôi động cùng với những trò chơi Team Building vui nhộn sẽ giúp cho đại gia đình Rivercrane thân thiết hơn.

    CHẾ ĐỘ EVENT CÔNG TY

    Những hoạt động Team building, Company Building, Family Building, Summer Holiday, Mid-Autumn Festival… sẽ là những khoảnh khắc gắn kết đáng nhớ của mỗi một nhân viên trong từng dự án, hoặc sẽ là những điều tự hào khi giới thiệu công ty mình với với gia đình thân thương, cùng nhau chia sẻ yêu thương với thông điệp “We are One”

    BẢO HIỂM

    Công ty Rivercrane Việt Nam đảm bảo tham gia đầy đủ chế độ Bảo hiểm xã hội, bảo hiểm y tế và bảo hiểm thất nghiệp. Cam kết chặt chẽ về mọi thủ tục phát sinh công ty đều hỗ trợ và tiến hành cho nhân viên từ đầu đến cuối. Những chế độ bảo hiểm khác công ty cũng đặc biệt quan tâm và từng bước tiến hành.

    CHẾ ĐỘ PHÚC LỢI KHÁC

    Hỗ trợ kinh phí cho các hoạt động văn hóa, văn nghệ, thể thao; Hỗ trợ kinh phí cho việc mua sách nghiên cứu kỹ thuật; Hỗ trợ kinh phí thi cử bằng cấp kỹ sư, bằng cấp dành cho ngôn ngữ. Hỗ trợ kinh phí tham gia các lớp học về quản lý kỹ thuật bên ngoài; Các hỗ trợ phúc lợi khác theo quy định công ty…

    CHĂM SÓC SỨC KHỎE ĐỊNH KỲ – 2017

    Tài sản quý giá nhất của con người không gì khác hơn là sức khỏe. Khi mỗi cá nhân trong tập thể khỏe mạnh thì tập thể đó cũng sẽ khỏe mạnh và phát triển bền vững. Hoạt động khám sức khỏe định kỳ được công ty tổ chức hàng năm nhằm cung cấp đến cho toàn thể nhân viên sự chăm sóc sức khỏe tốt nhất. Năm nay, hoạt động này được tổ chức tại Trung tâm Xét nghiệm và chẩn đoán y khoa cơ sở 2 (Medical Diag Center 2), trong bốn ngày cuối tuần từ ngày 30/09 - 21/10/2017. Sáng nay, ngày 30/09/2017, một ngày cuối tháng 9 đẹp trời, nhân viên công ty Rivercrane Việt Nam cùng hưởng ứng ngày "Chăm sóc sức khỏe định kỳ" của công ty. Các thành viên tập trung lúc 8h00 tại tầng trệt của Trung tâm ở địa chỉ 75 Phạm Viết Chánh, P. Nguyễn Cư Trinh, Q1, TPHCM, một số thành viên đã đến sớm hơn để tránh "kẹt xe" tại phòng khám. Tuy là ngày thứ 7, hoạt động khám sức khỏe tại trung tâm khá đông nhưng mọi người không mất nhiều thời gian chờ đợi, các tầng đều có nhân viên hướng dẫn nhiệt tình, quá trình khám diễn ra rất nhanh chóng. Ngày đầu tiên của hoạt động đã diễn ra rất tốt đẹp. Để hoạt động diễn ra thành công và kết quả khám được chính xác và phản ánh đúng tình hình sức khỏe, trước khi diễn ra hoạt động, ban tổ chức đã gửi cho toàn công ty bản hướng dẫn và một số lưu ý trước ngày khám sức khỏe như: nhịn ăn trước khi khám ít nhất 8h, uống nhiều nước, ... Địa điểm khám không quá xa công ty nên rất thuận tiện cho việc đi lại. Sau khi tham gia khám sức khỏe, các nhân viên sẽ gửi cảm nhận, những điều hài lòng và chưa hài lòng về cho ban tổ chức để có thể thực hiện hoạt động tốt hơn vào năm sau. Hoạt động sẽ tiếp tục diễn ra trong 3 ngày 7,14,21/10/2017.

    ĐỘI BÓNG RIVERCRANE

    Bóng đá là tình yêu, là đam mê bất tận . Dù quá khứ đã qua đi... Dù hiện tại còn dang dở... Dù tương lai là phần phía sau... Thì tình yêu bóng đá... Mãi đẹp hơn tất cả... Mỗi người trong chúng ta đều có một tình yêu. Và giữa cuộc sống bộn bề, tấp nập, chúng ta tìm thấy nhau bởi tình yêu quả bóng tròn. Có rất nhiều lý do để ta đến với trái bóng, có thể vì ta yêu một người gác đền vĩ đại, có thể vì hình bóng một người tiền đạo khắc ghi trong tim ta, có thể vì sự hi sinh âm thầm của những trung vệ, hậu vệ, có thể vì một người thầy, một huấn luận viên đẹp đẽ biết bao và cũng có thể đơn giản vì ta yêu vẻ đẹp của bóng đá. Tình yêu của mỗi người khác nhau, nguyên nhân để yêu cũng không giống nhau nhưng ta đều chung một niềm hạnh phúc, đều cảm thấy may mắn khi cuộc sống này có một môn thể thao diệu kì và đặc biệt như thế. Xin chào anh chị em yêu bóng đá. Xin cho phép chúng tôi có lời giới thiệu về đội bóng dành cho các anh em yêu thích bóng đá tại công ty. Thành viên của đội luôn gắn bó thân thiết với nhau như anh em một nhà. Thành viên đội khá đa dạng, chủ yếu là người trong công ty, ngoài ra cũng có một số bạn bè của họ đến tham gia cùng. Chúng tôi luôn hướng tới mục tiêu xây dựng một đội bóng có tổ chức và tinh thần đồng đội cao, đồng thời, lấy đội bóng làm trung tâm xây dựng community rộng mở cho tất cả anh chị em yêu thích bóng đá. Với mục đích nâng cao sức khỏe để học tập và công tác tốt, cũng như tạo ra một sân chơi nơi mọi người có thể quên đi những mệt mỏi thường ngày, đội bóng đã và đang tổ chức, tham gia nhiều họat động đa dạng . Mỗi tuần , đội tập và thi đấu giao hữu giao lưu vui vẻ với các anh em cùng nhau lúc 19h30 tại sân bóng Tiểu Ngư, quận 10, TPHCM. Đội cũng rất hoan nghênh những anh em yêu bóng đá đến cùng tập luyện và tham gia vào đội bóng.

    Quốc tế thiếu nhi 1-6

    Năm 2018 là năm công ty Rivercrane Việt Nam bước qua tuổi thứ 6. Sau 5 năm hoạt động, năm thứ 6 này, từ việc kế thừa và phát huy các truyền thống văn hóa của tập đoàn Rivercrane, công ty tại Việt Nam đã có những sự kiện thường niên được tổ chức hoành tráng hơn và bổ sung thêm những sự kiện, chính sách mới, nâng cao phúc lợi, đem lại niềm vui cho toàn thể anh chị em công ty. Một trong những sự kiện mới được công đoàn công ty tổ chức là mừng Quốc tế thiếu nhi cho con cán bộ công nhân viên. Bên cạnh ngày hội gia đình, chính sách mua bảo hiểm sức khỏe cho người thân các nhân viên lâu năm, ma chay, hiếu hỉ thì đây là sự kiện mới, gắn kết nơi làm việc của mọi người và gia đình. Năm nay, tuy là năm đầu tiên tổ chức nhưng công đoàn công ty cũng đã bỏ rất nhiều tâm huyết chuẩn bị từ rất sớm từ việc tổng hợp danh sách và suy nghĩ những phần quà phù hợp cho các bé với độ tuổi và giới tính khác nhau. Với các bé dưới 3 tuổi, các món quà cần phải dễ chơi nhưng cũng không kém phần thú vị, hỗ trợ các bé phát triển khả năng tư duy và đặc biệt là không nguy hiểm cho các bé. Với các bé từ 3-5 tuổi. Đây là độ tuổi các bé rất thích khám phá thế giới xung quanh và rất hào hứng với những kiến thức mới. Do đó, món quà dành cho các bé được lựa chọn là bộ sách "Mai em vào lớp 1" dành riêng cho bé từ 3-4 tuổi và 5-6 tuổi và kèm thêm 2 cuốn sách "10 vạn câu hỏi vì sao". Rất trùng hợp khi các bé trên 6 tuổi của các anh, chị đều là các bé gái, nên món mà hấp dẫn không gì bằng là một con heo bông màu hồng siêu dễ thương. Đính kèm với các món quà là những lời chúc ý nghĩa gửi đến các bé: Chúc các bé mạnh khỏe, chăm ngoan và nghe lời ông bà cha mẹ. Vì điều kiện không gian năm nay không cho phép nên công ty chỉ có thể gửi những món quà đến các phụ huynh để tặng cho các bé. Hi vọng là năm sau, với văn phòng mới của công ty rộng hơn 400m2 sẽ được đưa vào sử dụng trong tháng 8 tới, các bé sẽ được đến công ty để ban tổ chức có thể trao quà tận tay cho các bé.

    FAMILY DAY EVENT – 2018

    Ngày 04/08/2018 vừa qua, toàn thể thành viên Công ty Rivercrane Việt Nam và gia đình đã cùng tham dự một trong những sự kiện hết sức ý nghĩa của năm - Family day 2018 - Your Family is All Of Your Life. Sự kiện đã được tổ chức trong bầu không khí hết sức trẻ trung và năng động tại khu du lịch Văn Thánh, quận Bình Thạnh. Hàng năm, công ty tổ chức chương trình không vì mục đích gì khác ngoài mong muốn tạo ra một sự kiện, nơi người thân có cơ hội được tìm hiểu rõ hơn về công ty, nơi thành viên gia đình mình đang làm việc. Đồng thời tạo sân chơi để các nhân viên cùng người thân có khoảnh khắc kết nối, gắn bó và chia sẻ, vì tin rằng gia đình chính là điểm tựa của cá nhân xuất sắc và nhân viên xuất sắc chính là nền tảng của một công ty phát triển vững mạnh. Mỗi năm, ban tổ chức Family day lại có những sáng kiến đổi mới hơn năm trước. Tuy nhiên, thủ tục không thể thiếu là tiết mục giới thiệu của các gia đình. Năm nay thì không theo danh sách ngẫu nhiên nữa, mà sẽ giới thiệu theo từng nhóm dự án của các Manager. Gia đình sẽ biết được sếp trực tiếp và các đồng nghiệp thường xuyên làm việc với người thân của mình. Sau đó là những trò chơi đội nhóm dành cho các gia đình không kém phần náo nhiệt nhưng cũng không quá sức, các bé đều có thể tham gia cùng với ba mẹ. Các trò chơi được ban tổ chức xây dựng nhằm gắn kết tình cảm trong gia đình và giữa các gia đình với nhau. Trò chơi đầu tiên - "Quan trọng là thần thái", như những người mẫu chuyên nghiệp, mọi người cùng hợp tác để tạo nên những bức ảnh đẹp nhất với các chủ đề do ban tổ chức đưa ra như là: Buồn ngủ, dỗi hờn, vui vẻ, mắc cỡ, giận,... Trò chơi vận động "nhẹ" tiếp theo - "We are super nhiều bóng" với màn thổi và chuyền bong bóng. Để tránh ăn gian, thổi bóng quá nhỏ, ban tổ chức đã tạo ra một "thần khí" - vợt đo bóng. Chỉ những quả bóng ko lọt qua vòng mới được tính điểm. Đặc sắc nhất của chương trình năm nay là trò chơi "Tam sao thất bản" vô cùng "dễ", mà dù cho cầm giấy cũng khó mà đọc được như: "Tri chi vi tri chi, bất tri vi bất tri, thị tri dã" - có nghĩa là biết thì nói là biết, không biết thì nói là không biết, vậy mới thật là biết, "Mặt mập mọc một mụt mụn bọc, hai mụt mụn bọc mọc mặt mộc mập" - câu này bình thường thôi mà, chỉ lẹo lưỡi "tí" thôi,... Cuối cùng các đội phải phân thắng bại bằng cách cầm giấy đọc, đội nào có nhiều người đọc trúng, rõ trong một lần thì thắng. Trong khi người lớn vò đầu bức tóc với trò "Tam sao thất bản" thì các bé làm gì? Công ty đã chuẩn bị một trò chơi khác cho các bé. Với trò chơi này các bé được biết thêm về nghệ thuật Tò he, một trong những loại hình nghệ thuật truyền thống mang bản sắc dân tộc độc đáo. Sau khi chơi xong các bé được chú nghệ nhân tặng mỗi bé một con tò he mà bé thích theo yêu cầu của bé. Sau khi đã vận động hết mình với các trò chơi, mọi người tập trung tại sảnh Bông Giấy của khu du lịch để nghỉ ngơi và nghe bác Tổng giám đốc cảm ơn và phát biểu bế mạc ngày hội gia đình. Sau những trò chơi hết mình, công ty chiêu đãi mọi người với tiệc buffet dân dã tại khu du lịch. Sau đây là vài cảnh hậu trường, công tác chuẩn bị, tập dượt phần demo cho vòng thi "Quan trọng là thần thái" do MC chương trình và hai supporters có tâm của dàn support.

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close