Trang chủ WordpressHướng dẫn Wordpress Tìm hiểu cấu trúc database WordPress và cách tối ưu

Tìm hiểu cấu trúc database WordPress và cách tối ưu

bởi Thạch Phạm
11 bình luận 6783 views
Khuyến mãi hosting

Mặc dù bạn là một người sử dụng WordPress thông thường hay một lập trình viên WordPress thì việc hiểu cấu trúc database và các thao tác cơ bản sẽ giúp bạn ít nhiều trong quãng thời gian sử dụng, chẳng hạn như bạn có thể hiểu các dữ liệu được lưu ở đâu, thay đổi theme thì nó sẽ lưu các tùy chọn ở đâu để có thể linh hoạt hơn trong việc kiểm soát kho dữ liệu đồ sộ này.

Hoặc hơn thế nữa, vào một ngày đẹp trời có một theme bị lỗi khiến bạn không vào được Dashboard để đổi sang theme khác thì việc duy nhất bạn có thể làm là vào tận database để sửa.

Cấu hình database tại file wp-config.php

Trước khi vọc vạch vào trong database thì chúng ta cần biết mã nguồn WordPress kết nối với database ở đâu và có các tham số cấu hình liên quan. Và chắc tất cả đều biết là cấu hình database sẽ nằm trong file wp-config.php trên website, file đó có nhiều nội dung nhưng đây là 4 dòng cấu hình database:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'tên của database');

/** MySQL database username */
define('DB_USER', 'tài khoản quản trị database');

/** MySQL database password */
define('DB_PASSWORD', 'mật khẩu quản trị database');

/** MySQL hostname */
define('DB_HOST', 'localhost');

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

Ở trong cách cài đặt WordPress mình không nói đến bước sửa file wp-config.php bởi vì chỉ cần chạy website và nó sẽ tự kêu bạn nhập các thông tin database, tránh khả năng bạn mở lên và sửa không đúng cách dẫn tới việc bị lỗi.

Nhưng khi bạn chuyển website sang host khác hoặc làm gì đó liên quan đến việc thay đổi database thì chắc chắn bạn cần phải hiểu 6 dòng trên. Và liên quan đến bảo mật, bạn cần hiểu thêm dòng này:


/**
* WordPress Database Table prefix.
*
* You can have multiple installations in one database if you give each a unique
* prefix. Only numbers, letters, and underscores please!
*/
$table_prefix = 'wp_';

Mặc định WordPress sẽ cấu hình các tiền tố của database là wp_ nhưng bạn nên đổi nó thành một  cái tên khác để hạn chế local attack, plugin iThemes Security có hỗ trợ chức năng này. Hoặc là bạn nên nhập một tiền tố khác khi cài đặt một website WordPress mới và tiền tố phải có dấu _ ở cuối để phân cách tên table của database.

Cấu trúc của database mặc định

Để xem cấu trúc các bảng và cột dữ liệu bạn cần truy cập vào PhpMyAdmin thường có mặt ở tất cả mọi gói host mà bạn mua. Bạn có thể thấy mặc định WordPress có tổng cộng 11 bảng dữ liệu (table).

wp-database-table

Ý nghĩa của các table như sau:

wp_commentmeta: Mục này sẽ chứa các dữ liệu vĩ mô của các bình luận có trên website nếu bạn có sử dụng custom comment meta. Chẳng hạn như bạn sử dụng plugin CommentLuv thì table này sẽ chứa các địa chỉ website từ RSS Feed của người bình luận. Nếu bạn dùng Akismet thì cột này sẽ phình to ra sau một thời gian dài.

  • wp_comments: Cột này sẽ chứa dữ liệu cần thiết về các bình luận như tên người bình luận, nội dung, ngày tháng, địa chỉ website,….
  • wp_links: Kể từ phiên bản WordPress 3.7 thì họ đã tắt đi chức năng Blogroll thường được dùng để thêm các liên kết mình yêu thích. Và các dữ liệu từ blogroll đó sẽ lưu ở đây, nhưng bây giờ thì hầu như không dùng tới.
  • wp_options: Table này khá quan trọng vì nó lưu trữ hầu hết các dữ liệu liên quan đến thiết lập của bạn trong website. Chẳng hạn như tên website, địa chỉ website, plugin đang dùng, theme đang dùng, dữ liệu khi kích hoạt theme và plugin,…Do đó nếu bạn muốn sửa plugin và theme đang dùng thì cứ vào table này.
  • wp_postmetas: Các dữ liệu trong bảng này là những dữ liệu vĩ mô có liên quan đến thiết lập của các post type mà bạn đang dùng. Chẳng hạn như các giá trị custom field,…
  • wp_posts: Những nội dung chính của một post type như tiêu đề, tác giả, nội dung,…sẽ chứa trong bảng này. Áp dụng cho toàn bộ post type, kể cả custom post type.
  • wp_term: Như bạn biết mặc định taxonomy là Category và Tag. Ví dụ ở category, bạn tạo ra 5 mục khác nhau thì 5 mục đó chính là term. Term sẽ được lưu trữ toàn bộ tại table này.
  • wp_term_relationships: Table này là chứa dữ liệu để một term có thể kết nối với một taxonomy qua ID. Chẳng hạn như bạn vừa tạo ra một term tên “Giáo dục” nhưng nó sẽ không thể hiểu “Giáo dục” là tag hay category nếu thiếu table này.
  • wp_term_taxonomy: Là nơi chứa đựng các danh sách taxonomy mà bạn đang có, bao gồm cả custom taxonomy.
  • wp_usermeta: Mỗi thông tin thành viên sẽ có thêm các tùy chọn thông tin thêm như họ tên, nickname và các user custom field. Các dữ liệu vĩ mô đó sẽ lưu ở đây.
  • wp_users: Là nơi chứa đựng các thông tin quan trọng của một thành viên như username, mật khẩu, email,…

Nhưng có thể bạn vào sẽ thấy nhiều table hơn vì có khá nhiều plugin sẽ tự tạo cho nó một table riêng để chứa các dữ liệu liên quan tới nó.

wordpress-database-relationship

Mô hình kết nối giữa các table với nhau

Mỗi một table sẽ có rất nhiều cột (column) và hàng (row) khác nhau, và mỗi cột và hàng nó đều có các key (khóa) và value (giá trị). Nó giống thế này:

wp-database-table-browse

Nếu bạn cần sửa giá trị thì chỉ cần ấn vào nút Edit rồi tiến hành sửa là xong.

Tối ưu database

Database tương tự như ổ cứng, do nó phải thường xuyên đọc – ghi – xóa dữ liệu liên tục nên sau một thời gian dài nó sẽ phát sinh ra các phân mảnh database làm cho dữ liệu bạn nặng nề hơn, truy xuất chậm hơn thông thường.

Vì vậy để chăm sóc “sức khỏe” cho database, bạn nên tiến hành sử dụng công cụ optimize database để tối ưu nó. Cách tối ưu là bạn click chọn vào phần Check All để chọn tất cả các table.

wp-database-checkall

Sau đó ở phần With selected kế bên, bạn chọn Optimize Database.

wp-database-optimizedatabase

Hoặc bạn có thể sử dụng plugin WP Cleanup để dọn rác và tối ưu database tốt hơn.

Backup database bằng PhpMyAdmin

Một vài trường hợp bạn không thể dùng plugin để backup WordPress thì bạn còn có cách khác để thử đó là backup thủ công bằng PhpMyAdmin.

Sau khi chọn database trong PhpMyAdmin, bạn chọn phần Export và ấn Go để tải file backup của database về máy, file này có đuôi mở rộng là .sql.

wp-database-backup

Trường hợp cần khôi phục (restore) lại dữ liệu thì chỉ cần chuyển qua tab Import và upload file .sql lên.

Lời kết

Nếu bạn thấy bài này dễ hiểu thì cũng đơn giản thôi vì WordPress không có gì là khó hiểu cả. Hãy nhớ rằng trước khi đụng vào database để sửa các giá trị bên trong đó, hãy backup lại để nếu có xảy ra lỗi thì cũng còn đường mà khôi phục lại như cũ.

11 bình luận

Có thể bạn quan tâm

0 0 vote
Article Rating
guest
11 Comments
mới nhất
cũ nhất đánh giá nhiều
Inline Feedbacks
View all comments
Minh Clear

Chào anh, Em muốn lên lịch các bài viết có sẵn bằng cách chỉnh sửa trong mysql thì làm thế nào ạ. Em có điều chỉnh post_status thành future, đồng thời chỉnh post_date và post_date_gmt thành cùng 1 ngày ở tương lai. Còn 2 cột thời gian còn lại thì em để ngày hiện tại. Kết quả là vào trong trang quản trị các bài viết đó hiển thị là “đã lên lịch” Nhưng vào đúng ngày mà em điều chỉnh để publish thì nó lại hiển thị thành “đã lên kế hoạch” (Màu đỏ) mà không publish, có cách… Xem thêm »

Minh

Chào anh,
Hiện em muốn chèn thằng hình ảnh thumbnail hoặc feature image (sao cho ảnh có thumb được), thì cần quan tâm đến table nào và những dòng nào của từng table ạ.
Cảm ơn anh

Tài

Bạn #Thạch ơi cho mình hỏi là mình có thể sửa database có sẵn của worlpress không nhỉ hoặc thay mới luôn có được không ạ và nếu có thì bằng cách nào để tránh lỗi sảy ra.

Tuyến

Hình “Mô hình kết nối giữa các table với nhau ” của anh lấy ở đâu trong phpmyadmin ra vậy anh ?

Win Nguyễn

Sản phẩm lưu ở đâu vậy admin, sao mìh kiếm hết mà ko ra?

stonedoan

Chào bạn ! Bạn cho mình hỏi mình có một code tải được trên mạng về bây giờ mình muốn chạy ở trên máy tính có cài sẵn Xampp . Mình đưa về tạo file đặt trong htdocs và điều chỉnh cả các file config , opition, và inpost dữ liệu từ data trên code rồi mà máy vẫn báo lỗi” Error establishing a database connection ” . Mình đã tìm đủ lỗi rồi mà không ra. Mong bạn giúp đỡ

stonedoan

Cảm ơn bạn! Mình đang thử rồi! Nhưng code của mình lấy có dữ liệu bài viết và mình cần cả những cái đó, gần như sao lưu toàn bộ web đó để đặt lên Xampp ý bạn ah. Mình đang không hiểu cần import thế nào để có nguyên dữ liệu đó, và cần phải điền database thế nào bạn ah. Mình có tạo dữ liệu mới và import thì nó báo lỗi thế này “No data was received to import. Either no file name was submitted, or the file size exceeded the maximum size permitted by your PHP… Xem thêm »

duybui

Bạn cho mình hỏi là mình có 1 database không phải của wordpress nhưng mình muốn import vào database của wordpress nhưng nó toàn báo lỗi .vậy do nguyên nhân là gì vậy bạn?

Quí Ngô

Chào a Thạch, Có lần em import database tạo từ trên hosting về máy bạn em lần đầu cài Xamapp và database mới vô thì nó chạy hiển thị được web ok hết ( database tạo mới chưa thêm bảng, sau đó import file database hosting vô, xong chay cài đặt wordpress mới rồi lấy database đó ) . Sau em làm cho máy em có cài wordpress trước đó và đăng nhập thì nó nhảy sang link của web mà e đã đưa lên hosting , khác với bạn em!! Vậy cho hỏi giờ em muốn làm giống bạn… Xem thêm »

11
0
Would love your thoughts, please comment.x
()
x