1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án cuối kì môn học quản trị cơ sở dữ liệu Đề tài tối ưu hóa hiệu năng database

22 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tối Ưu Hóa Hiệu Năng Database
Tác giả Trần Chí Công, Huỳnh Nhật Lê, Cao Phúc, Nguyễn Lê Sang, Trần Quý Thịnh, Nguyễn Đình Trường
Người hướng dẫn Phan Hiền
Trường học Đại Học Kinh Tế Tp. Hồ Chí Minh
Chuyên ngành Quản Trị Cơ Sở Dữ Liệu
Thể loại Đồ án cuối kỳ
Năm xuất bản 2024
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 22
Dung lượng 5,27 MB

Nội dung

Nhờ sự giảng d ạy rõ ràng, sinh độ ng và nh ng chia s kinh nghi m th ữ ẻ ệ ực tiễn từ Thầy,chúng em đã hiểu sâu hơn về các phương pháp tối ưu hóa hiệu năng cơ sở dữ liệu, bao gồm việc th

Trang 1

Giảng viên giảng dạy: PHAN HIỀN

Thành viên thực hiện: TRẦN CHÍ CÔNG

LÊ CAO PHÚC

NGUYỄN LÊ SANG TRẦN QUÝ THỊNH NGUYỄN ĐÌNH TRƯỜNG

ĐẠI HỌC KINH TẾ TP HỒ CHÍ MINH

TRƯỜNG CÔNG NGHỆ VÀ THIẾT KẾ

KHOA CÔNG NGHỆ THÔNG TIN KINH DOANH

ĐỒ ÁN CUỐI KÌ

MÔN HỌC: QUẢN TRỊ CƠ SỞ DỮ LIỆU

ĐỀ TÀI: TỐI ƯU HÓA HIỆU NĂNG DATABASE

Trang 2

L I M Ờ Ở ĐẦ U

Trướ c h t, nhóm chúng em xin gửi l i c ế ờ ảm ơn sâu sắc đế n gi ảng viên

hư ớng d n Phan Hi ẫ ền, người đã không chỉ ận tình hướ t ng d n chúng em trong su t quá trình th c hi n d án mà còn truy ố ự ệ ự ền đạ t nh ng ki n th ữ ế ức quý báu cùng kinh nghiệm th c t vô cùng h u ích Nh vào s dìu d t và ự ế ữ ờ ự ắ

sự t n tâm c a th ậ ủ ầy, chúng em đã có cơ hội h c h i, áp d ng lý thuy t vào ọ ỏ ụ ế thực hành m t cách hi u qu ộ ệ ả, qua đó hiểu sâu hơn về lĩnh vực quản tr ịcơ

sở d ữ liệu

Nhờ sự giảng d ạy rõ ràng, sinh độ ng và nh ng chia s kinh nghi m th ữ ẻ ệ ực tiễn từ Thầy,chúng em đã hiểu sâu hơn về các phương pháp tối ưu hóa hiệu năng cơ sở dữ liệu, bao gồm việc thiết kế bảng hợp lý, lập chỉ mục hiệu quả, tối ưu truy vấn SQL và qu n lý tài nguyên h ả ệ thống Đây không chỉ là nh ng ki n th c h c thu t mà còn là hành trang quý giá giúp em t ữ ế ứ ọ ậ ự tin hơn trong việc áp dụng vào thực tế công việc sau này

Trân tr ng kính chào và c ọ ảm ơn.

Trang 3

MỤC L C Ụ

LỜI M Ở ĐẦ 1 U

CHƯƠNG 1 PHẦN MỞ ĐẦU 3

1.1 B i c nh hi n t i ố ả ệ ạ 3

1.2 Nh ng thách th c và t m quan tr ng c a vi c t ữ ứ ầ ọ ủ ệ ối ưu 3

1.3 Ph m vi nghiên c u ạ ứ 5

CHƯƠNG 2 TỔNG QUAN LÝ THUYẾT 6

2.1 T ng quan v InnoDB ổ ề 6

2.2 Các thành ph n quan tr ầ ọng 7

2.3 Khái ni ệm 8

CHƯƠNG 3 PHƯƠNG PHÁP TỐI ƯU 10

3.1 Tối Ưu InnoDB Buffer Pool 10

3.2 T ối ưu hóa TableSpace 13

3.3 T ối ưu hóa Index 14

3.4 Cách thức hoạt động chung 17

CHƯƠNG 4 THẢ O LU ẬN & ĐÁNH GIÁ 19

4.1 Các k t qu ế ả nhận đượ 19 c 4.2 M t s t n t i ộ ố ồ ạ 19

4.3 Hướng phát triển 19

TÀI LI U THAM KH O Ệ Ả 21

Trang 4

CHƯƠNG 1 PHẦN MỞ ĐẦU

1.1 B i c nh hi n t i ố ả ệ ạ

Trong k nguyên sỷ ố hiện nay, dữ liệu đã trở thành tài s n quan tr ng nh t c a mả ọ ấ ủ ọi

tổ chức và doanh nghi p V i s phát tri ệ ớ ự ển vũ bão của công ngh thông tin, khệ ối lượng d ữ liệu được t o ra và x lý m ạ ử ỗi ngày đang tăng theo cấp số nhân Trong bối cảnh đó, hiệu năng của hệ thống quản lý cơ sở d ữ liệu (CSDL) không còn ch là m ỉ ột yếu t k ố ỹ thuật đơn thuần, mà đã trở thành độ ng lực then chốt quy ết đị nh sự thành

công c a các gi i pháp công ngh thông tin ủ ả ệ

Xuất phát từ thực ti ễn đó, đề tài "Tối Ưu Hiệu Năng Cơ Sở ữ Liệu InnoDB" được D

thực hi n v i m ệ ớ ục tiêu nghiên c u chuyên sâu nh m gi i quy t nh ng thách th c k ứ ằ ả ế ữ ứ ỹ

thu t trong vi c qu n trậ ệ ả ị và vận hành cơ sở dữ li ệu Chúng tôi hướng đế n việc phân

tích toàn di n các thành ph n then chệ ầ ốt như InnoDB Buffer Pool, Tablespace, và

Indexing - những y u t quyế ố ết định đến s c mứ ạnh th c s c a h ự ự ủ ệ thống CSDL Nghiên c u này không ch mang tính h c thuứ ỉ ọ ật cao mà còn mang đậm tính ứng dụng thực ti n B ng vi c áp d ễ ằ ệ ụng các phương pháp phân tích chuyên sâu, tiến hành các

thí nghi m benchmark chính xác, chúng tôi k v ng sệ ỳ ọ ẽ mang đến nh ng gi i pháp ữ ả

cụ thể, kh thi giúp các nhà phát tri n và qu n tr h ả ể ả ị ệ thống c i thi ả ện đáng kể hiệu suất hoạt động của cơ sở dữ liệu

1.2 Nh ng thách th c và t m quan tr ng c a vi c tữ ứ ầ ọ ủ ệ ối ưu

1.2.1 Những thách thức

Trong quá trình quản lý và vận hành cơ sở dữ liệu, các tổ chức thường gặp phải những thách thức lớn, đặc biệt khi khối lượng dữ liệu không ngừng gia tăng và các yêu cầu truy xuất ngày càng phức tạp Các thách thức phổ biến bao gồm:

Tăng Khối Lượng Dữ Liệu: Sự bùng nổ của dữ liệu từ các hệ thống

IoT, thương mại điện tử và các ứng dụng hiện đại đòi hỏi cơ sở dữ liệu phải có khả năng xử lý hiệu quả trong thời gian ngắn mà không làm giảm hiệu năng

Hiệu Quả Truy Vấn: Các truy vấn không được tối ưu có thể gây ra sự

chậm trễ trong quá trình xử lý, ảnh hưởng tiêu cực đến trải nghiệm người dùng và hoạt động kinh doanh

Tài Nguyên Hệ Thống Có Hạn: CPU, bộ nhớ và lưu trữ thường bị

giới hạn, trong khi nhu cầu xử lý lại ngày càng lớn Điều này đòi hỏi phải phân bổ và sử dụng tài nguyên một cách hợp lý

Trang 5

Khả Năng Mở Rộng: Việc đảm bảo hệ thống có thể mở rộng khi quy

mô dữ liệu hoặc số lượng người dùng tăng cao là một thách thức lớn đối với các kiến trúc cơ sở dữ liệu truyền thống

Tính Toàn Vẹn và Độ Tin Cậy: Các thao tác tối ưu hóa phải đảm bảo

không làm ảnh hưởng đến tính toàn vẹn của dữ liệu và độ tin cậy của

hệ thống

1.2.2 Tầm quan tr ng c a vi c t ọ ủ ệ ối ưu hóa hiệu năng

Tối ưu hóa cơ sở dữ liệu không chỉ là cải thi n tệ ốc độ mà còn mang l i nhi u lạ ề ợi ích quan trọng:

Hiệu Suấ t H Thống C i Thi ệ ả ện Đáng Kể: Vi c gi m th i gian truy ệ ả ờvấn và tăng tốc độ xử lý giúp hệ thống hoạt động mượt mà hơn, đáp ứng nhanh các yêu c u t ầ ừ người dùng

Giảm Chi Phí V n Hành ậ : Một cơ sở d ữ liệu được tối ưu tốt s s dẽ ử ụng

ít tài nguyên hơn, giảm nhu cầu nâng cấp phần cứng hoặc mở rộng cơ

sở h t ng không c n thiạ ầ ầ ết

Tăng Hiệu Quả Quyết Định: Dữ liệu được truy xu t nhanh chóng và ấchính xác là n n tề ảng để đưa ra các quyết định kinh doanh k p th i và ị ờhiệu quả

Tăng Tính Cạnh Tranh: Các tổ chức có hệ thống cơ sở ữ liệ d u hiệu quả hơn sẽ cung cấp dịch vụ tốt hơn, cải thiện trải nghiệm người dùng

và t o l i th cạ ợ ế ạnh tranh trên th ị trường

Hỗ Trợ Khả Năng Mở R ng: H ộ ệ thống đượ ối ưu hóa sẽ ễc t d dàng thích nghi v i sớ ự tăng trưởng dữ liệu ho c sặ ố lượng người dùng mà không cần thay đổi lớn trong thi t k ế ế

Trang 6

1.3 Ph m vi nghiên c u ạ ứ

Bài báo cáo này t p trung nghiên c u các k thu t và chiậ ứ ỹ ậ ến lược tối ưu hóa hiệu năng

cơ sở dữ liệu MySQL v i tr ng tâm là ớ ọ InnoDB, m t storage engine phộ ổ biến và

m nh m Các n i dung chính trong ph m vi nghiên c u bao gạ ẽ ộ ạ ứ ồm:

▪ InnoDB InnoDB là storage engine mặc định trong MySQL, hỗ trợ các tính năng như giao dịch (transaction), khóa c p hàng (row-level locking), và bấ ảo toàn tính toàn v n tham chi u (referential integrity) ẹ ế

▪ InnoDB Buffer Pool Là vùng b ộ nhớ chính của InnoDB, nơi lưu trữ dữ liệu, chỉ mục (index) và metadata để tăng tốc độ truy cập

▪ Tablespace Là nơi lưu trữ dữ liệu và chỉ m c c a các b ng trong InnoDB ụ ủ ảTablespace ảnh hưởng tr c tiự ếp đến vi c quệ ản lý dung lượng và tốc độ truy xuất d ữ liệu

▪ Index (Ch Mỉ ục) Là công c quan trụ ọng giúp tăng tốc độ truy v n b ng cách ấ ằsắp x p và tế ổ chức d ữ liệu theo cách hi u qu ệ ả hơn

Trang 7

CHƯƠNG 2 TỔNG QUAN LÝ THUY T Ế

• Khóa c p hàng (Row-level locking): InnoDB s dấ ử ụng cơ chế khóa cấp hàng

để cho phép nhi u truy về ấn đồng th i trên các hàng d u khác nhau mà ờ ữ liệkhông gây ra xung đột Điều này giúp tối ưu hóa hiệu su t trong các h ấ ệthống yêu c u nhi u giao dầ ề ịch đồng thời

• Khả năng phục hồi dữ u: InnoDB s d ng các k liệ ử ụ ỹ thuật như redo log và doublewrite buffer để đảm bảo tính toàn v n c a d u ngay c khi hẹ ủ ữ liệ ả ệ thống bị s c Khi có s c x y ra, InnoDB có th ự ố ự ố ả ể phục h i d ồ ữ liệu mà không b m t mát thông qua vi c ghi lị ấ ệ ại các thay đổi trước khi thực sự ghi vào đĩa

Trang 8

2.2 Các thành ph n quan trầ ọng

InnoDB được cấu thành từ nhiều thành phần cơ bản, m i thành phỗ ần đóng vai trò quan tr ng trong vi c tọ ệ ối ưu hóa hiệu su t và tính toàn v n cấ ẹ ủa cơ sở ữ liệu d Tablespaces: là nơi lưu trữ d ữ liệu và ch m c trong InnoDB Có hai lo i tablespace ỉ ụ ạchính:

• System Tablespace: Lưu trữ các metadata hệ thống, thông tin về bảng, và dữ liệu của các b ng không s dả ử ụng tính năng file-per-table T t c các bấ ả ảng được lưu trữ chung trong m t tablespace duy nh ộ ất

• File-per-table Tablespace: M i b ng có m t file tablespace riêng bi t (vỗ ả ộ ệ ới đuôi ibd), điều này giúp dễ dàng quản lý dữ liệu và ph c h i khi c n Viụ ồ ầ ệc bật tính năng innodb_file_per_table có thể cải thiện hiệu suất và quản lý dễ dàng hơn trong các cơ sở dữ liệu lớn

Index: đóng vai trò quan trọng trong vi c tệ ối ưu hóa tốc độ truy v n InnoDB h ấ ỗ trợ hai lo i ch mạ ỉ ục chính:

• Clustered Index: Đây là chỉ mục chính của bảng, trong đó các node lá chứa toàn b d u c a b ng B ng s ộ ữ liệ ủ ả ả ẽ được lưu trữ theo thứ tự của chỉ m c này ụ

• Secondary Index: Ch m c ph không ch a d ỉ ụ ụ ứ ữ liệu mà ch ỉtrỏ đến các ch mỉ ục chính, giúp c i thi n tả ệ ốc độ truy v n không ph i theo th t chính ấ ả ứ ự

Việc t o ch m c trên các cạ ỉ ụ ột thường xuyên được s d ng trong các câu truy vử ụ ấn giúp giảm đáng kể thời gian thực thi

Buffer Pool: Buffer Pool là m t khu v c bộ ự ộ nhớ trong InnoDB, nơi lưu trữ các d ữliệu và chỉ mục được truy cập thường xuyên Khi truy v n yêu c u d u, InnoDB ấ ầ ữ liệ

Trang 9

sẽ kiểm tra trong buffer pool trước khi truy cập đến đĩa, giúp giảm tải cho hệ thống

và c i thi n tả ệ ốc độ truy xuất dữ liệu

Redo Log và Undo Log:

• Redo Log: Được s dử ụng để ghi l i t t c ạ ấ ả các thay đổi đối v i d ớ ữ liệu mà chưa được ghi vào đĩa Khi h ệ thống g p s cặ ự ố, các thay đổi trong redo log s ẽ được

sử dụng để phục h i d ồ ữ liệu

• Undo Log: Lưu trữ các thông tin cần thiết để hoàn tác (rollback) các giao dịch chưa hoàn tất Điều này giúp đảm bảo rằng các giao d ch không hoàn ịchỉnh sẽ không làm thay đổi cơ sở dữ liệu

2.3 Khái ni m

2.3.1 Inno buffer pool

Là m t vùng nh ộ ớ chính để InnoDB cache table và index khi nó được truy cập Buffer pool cho phép d ữ liệu được s dử ụng thường xuyên được lấy trực tiếp từ b ộnhớ, giúp tăng tốc độ xử lý Thông thường, ở các máy chủ chuyên dụng, 80% bộ nhớ s dùng cho buffer pool ẽ

Buffer pool là nơi để InnoDB cache table và index, đây là một thành phần quan tr ng c a kiọ ủ ến trúc InnoDB, nó giúp tăng tốc độ truy xu t dấ ữ liệu b ng cách ằgiảm số l n truy xu t d u t ầ ấ ữ liệ ừ ổ đĩa (disk I/O) b ng cách: ằ

• Nếu page đã có trong buffer pool MySQL sẽ đọc tr c ti p t b ự ế ừ ộ nhớ mà không cần phải đọ ừ ổ đĩa, điềc t u này sẽ giúp tăng tốc độ truy xu t d ấ ữ liệu

• Nếu page không có trong buffer pool, MySQL s ẽ phải đọc từ ổ đĩa và lưu vào buffer pool trước khi tr v k t qu Viả ề ế ả ệc đọc d ữ liệu t ừ ổ đĩa sẽ t n nhi u thố ề ời gian hơn so với đọc từ bộ nhớ nên nó sẽ làm ch m tậ ốc độ truy xu t d ấ ữ liệu.2.3.2 Table Space

Tablespace là một vùng lưu trữ trên đĩa mà cơ sở ữ liệ d u s dử ụng để lưu trữcác b ng và ch m c Tablespace có th bao g m m t ho c nhi u t p dả ỉ ụ ể ồ ộ ặ ề ệ ữ liệu vật lý trên đĩa Trong hệ thống InnoDB, tablespace giúp tổ chức và quản lý các c u trúc dấ ữ liệu quan trọng như dữ liệu b ng, ch m c, undo logs và các ả ỉ ụthành ph n khác ầ

Trang 10

2.3.3 Index

• Index là m t c u trúc d ộ ấ ữ liệu được dùng để định v và truy c p nhanh nh t vào ị ậ ấ

dữ liệu trong các b ng database ả

• Index là m t cách tộ ối ưu hiệu su t truy v n database b ng vi c giấ ấ ằ ệ ảm lượng truy c p vào b ậ ộ nhớ khi th c hi n truy vự ệ ấn

Ví d

Giả s b ử ạn có m t b ng d ộ ả ữ liệu với 1000 người và b n mu ạ ốn tìm người có tên là

"Thanh" Cơ chế đánh index sẽ hoạt động như sau:

Khi b n t o index cho c t "name", tên c a mạ ạ ộ ủ ỗi ngườ ẽ được đánh số ừ 0 đến i s t

999 theo th t abc Ví d : "An" có th có s index 0, "Anh" có s index 1, và ứ ự ụ ể ố ố tiếp tục như vậy Tóm lại, danh sách tên s ẽ được s p x p theo th t abc ắ ế ứ ự Khi bạn đánh index và nhập truy vấn "SELECT WHERE name = 'Thanh'", cơ chế index sẽ được s d ử ụng để ối ưu hóa việ t c tìm ki m Thay vì so sánh t ng tên ế ừ một, nó s b ẽ ắt đầu từ giữa danh sách và hỏi: "Tên v ở ị trí gi a có l ữ ớn hơn hay nhỏ hơn 'Thanh'?" Nếu lớn hơn, nó sẽ tìm ở nửa phía sau của danh sách; nếu nhỏ hơn, nó sẽ tìm ở nửa phía trước Quá trình này l p l ặ ại cho đến khi tìm ra tên

"Thanh" hoặc đạ ớ ố ầt t i s l n so sánh tối đa, thường là 10 lần.

Khi số lượng người càng nhiều, cơ chế index giúp tìm kiếm nhanh hơn Ví dụ, nếu bạn có m t tri ộ ệu người, ch c n tỉ ầ ối đa 20 lần so sánh để tìm ra người tên

"Nam", trong khi n u không có index, b n có th ế ạ ể phả i so sánh t i 999.999 lần ớ

Trang 11

CHƯƠNG 3 PHƯƠNG PHÁP TỐI ƯU

3.1 Tối Ưu InnoDB Buffer Pool

Buffer Pool là thành phần quan trọng quyết định hiệu suất của InnoDB Để tối ưu hóa hiệu suất, các nhà quản trị cơ sở dữ liệu cần phải cấu hình và điều chỉnh buffer pool sao cho phù hợp với tài nguyên phần cứng và yêu cầu của hệ thống

Tăng Kích Thước Buffer Pool:

Kích thước của buffer pool cần được cấu hình sao cho phù hợp với dung lượng bộ nhớ RAM của hệ thống Một quy tắc phổ biến là dành khoảng 70 80% bộ nhớ hệ -thống cho buffer pool, tùy thuộc vào yêu cầu của cơ sở dữ liệu

Ví dụ: Đối với một máy chủ có 64GB RAM, bạn có thể cấu hình như sau:

[mysqld]

innodb_buffer_pool_size=50G

▪ Phân Chia Buffer Pool:

Khi cơ sở dữ liệu có khối lượng công việc lớn và yêu cầu nhiều truy vấn đồng thời, việc chia buffer pool thành nhiều instance sẽ giúp tăng khả năng xử lý đồng thời, giảm thiểu tắc nghẽn

Ví dụ:

innodb_buffer_pool_instances=8

Trang 12

Thu t toán least recently used (LRU) c a buffer pool ậ ủ

Buffer pool s d ng thuử ụ ật toán LRU để xác nh page nào cđị ần xóa để nhường ch ỗcho page mới Trước gi i thích thu t toán chúng ta hãy nhìn qua hình vả ậ ẽ dưới đây

để có cái nhìn tổng quan hơn:

Khi cần thêm ch ỗ để thêm 1 page m i vào buffer pool, page nào ít s d ng nh t s ớ ử ụ ấ ẽ

bị loại b và m t page m i s ỏ ộ ớ ẽ được thêm vào giữa danh sách "Midpoint insertion" chia Buffer Pool list thành 2 sublist dưới đây:

• Ở phần đầu là "new sublist" là những page được truy c p gậ ần đây

• Ở phần cu i là "old sublist" là nhố ững page cũ truy cập ít hơn

Trang 13

Mặc định thu t toán hoậ ạt động như sau:

• 3/8 buffer pool dành cho “old sublist”

• “Mid point” của danh sách là ranh giới của đuôi “new sublist” và phần đầu của “old sublist”

• Khi InnoDB đọc một page và đưa nó vào buffer pool, trước tiên nó sẽ chèn vào “Mid point”

• Khi một page được truy c p b t lu n nó ậ ấ ậ ở “new sublist” hay “old sublist”, thì

nó s ẽ được chuy n qua phể ần đầu “new sublist”

• Page nào ít được sử dụng sẽ được đẩy về cuối danh sách và bị xóa khỏi danh sách n u c n khoế ầ ảng trống cho vi c thêm page m i Page b xóa kh i buffer ệ ớ ị ỏpool t ừ “old sublist”

Mặc định, page được l y khi khi chúng ta th c hi n các truy vấ ự ệ ấn đọ ẽ được s c thêm ngay vào “new sublist”, điều này có nghĩa nó ở buffer pool lâu hơn Ví dụ quét b ng ảcho mysqldump ho c s d ng các câu truy v n SELECT không có mặ ử ụ ấ ệnh đề WHERE

nó có thể đưa một lượng l n dớ ữ liệu vào buffer pool và lo i b mạ ỏ ột lượng l n d ớ ữliệu cũ mặc dù d ữ liệu mới này chưa chắc đã được s d ng l i ử ụ ạ Ở tình hu ng này số ẽ làm cho các page s dử ụng thường xuyên bị đưa vào “old sublist” và có thể bị đá ra ngoài Cho nên khi vi t truy vế ấn đọc chúng ta hãy c g ng tố ắ ối ưu nó đặc biệt đừng quên mệnh đề WHERE

Ngoài ra còn có công thức để giúp đánh giá hiệu qu s d ng InnoDB Buffer Pool ả ử ụtrong MySQL và nó giúp xác định tỷ lệ truy cập dữ liệu từ bộ nhớ RAM (cache) thay vì phải đọc từ ổ đĩa:

Công thức:

Với :

- Innodb_pages_read là s ố lượng trang d ữ liệu được đọc từ ổ đĩa vào InnoDB

Buffer Pool

Ngày đăng: 04/02/2025, 16:40

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN