@command ngon quá bác, chia sẻ ae tí cách tối ưu site với core pass google với bác, lcp mình tối ưu hoài nó ko giảm mấy
Tìm trong forum nhiều hướng dẫn về Core Web Vitals lắm Ví dụ như: https://cafemmo.club/threads/tu-van-ve-toi-uu-largest-contentful-paint-lcp.3930/ https://cafemmo.club/threads/tu-van-ve-toi-uu-core-web-vitals.4239/
Nếu ae nào quan tâm tốc độ phản hồi từ phía CSDL với nhiều M records thì tham khảo và thử nghiệm MongoDB nhé, đây là demo monitor của server thấp nhất tại Hetzner (AX41-NVMe). Trong hình, máy chủ này (AX41-NVMe) sử dụng MongoDB với khoảng 30 databases, và database có nhiều records nhất tầm khoảng 18M records, thấp nhất khoảng 500k records. Tốc độ trung bình đọc dữ liệu ấn tượng phải ko nè Tuy nhiên, nếu sites các bác ko định hướng sử dụng vài chục triệu records trong tương lai thì dùng MySQL (phán đại thôi nhé, chứ mình chưa dùng MySQL với vài chục triệu rows bao giờ, chỉ dùng dưới 1M rows thôi)
Này là đọc theo câu lệnh gì mà nhanh vậy anh. Em select where theo `id` của mysql nhanh cũng 2.3ms (tổng data này là 100m rows (tag, cat, post, reletionship table,..), riêng table results thì hơn 10m rows, chỉ index primary key)
@Nai ồ, MySQL chứa dữ liệu nhiều thế mà tốc độ quá chuẩn rồi, nếu tính bằng <20ms thì tốc độ ko khác biệt gì lắm. Bác có thể chia sẻ thêm về CSDL bác đang dùng như MySQL version nào? Loại engine Myisam hay InnoDB thế? Cấu hình my.conf tinh chỉnh thế nào vậy? và thông số VPS hay máy chủ ra sao thế? Còn với MongoDB có thông số trong hình mình chia sẻ thì chiếm đa số là select record qua hàm findOne() trên field đã được đánh index giống như select trong MySQL chỉ có 1 kết quả ấy, dĩ nhiên vẫn có find() để trả về nhiều records trong 1 query nhưng tỷ lệ này ko nhiều.
Em đang dùng server ở OVH. Engine em dùng InnoDB cho các table nào update realtime còn lại thì dùng MyISAM ========================================================================================= THONG TIN CO BAN ========================================================================================= Cong nghe ao hoa : CPU model : Intel(R) Xeon(R) CPU E3-1245 v5 @ 3.50GHz So loi CPU : 8 Toc do CPU : 3016.120 MHz Dung luong RAM : 31999 MB Dung luong Swap : MB Toc do I/O : 196MB/s --- Double Post Merged, Jul 19, 2022, Original Post Date: Jul 19, 2022 --- my.cnf PHP: [client]socket=/var/lib/mysql/mysql.sock[mysql]max_allowed_packet = 128M[mysqld]local-infile=0ignore-db-dir=lost+foundcharacter-set-server=utf8datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socktmpdir=/var/lib/mariadbtmpinnodb=ONback_log = 768max_connections = 2000key_buffer_size = 512Mmyisam_sort_buffer_size = 512Mmyisam_max_sort_file_size = 4096Mjoin_buffer_size = 1Mread_buffer_size = 1Msort_buffer_size = 2Mtable_definition_cache = 8192table_open_cache = 8192thread_cache_size = 384wait_timeout = 1800connect_timeout = 10tmp_table_size = 768Mmax_heap_table_size = 768Mmax_allowed_packet = 128M#max_seeks_for_key = 4294967295#group_concat_max_len = 1024max_length_for_sort_data = 1024net_buffer_length = 16384max_connect_errors = 100000concurrent_insert = 2read_rnd_buffer_size = 512Kbulk_insert_buffer_size = 8Mquery_cache_limit = 1024Kquery_cache_size = 160Mquery_cache_type = 1query_cache_min_res_unit = 2Kquery_prealloc_size = 262144query_alloc_block_size = 65536transaction_alloc_block_size = 8192transaction_prealloc_size = 4096default_storage_engine = InnoDB
mysql hay mongodb k biết cách vẫn chết nhue thường. ví dụ trong bài toán search : mà cứ like%keyword% . thử tưởng tượng ra xem nó querry 20M róws từ tren xuông dưới. vài thằng đủ chết rồi - nên bài toàn chia ra : như search dùng công cụ như sphinxsearch, indexing ròi dùng làm search - sitemap : nhét 10000 lines thì cứ chia ra kiều : where id > $id limit 10000 ..... như vậy mỗi bài toán có cách tính riêng. phải cân nhắc tối ưu --- Double Post Merged, Nov 21, 2023, Original Post Date: Nov 21, 2023 --- cẩn trọng khi dùng MyISAM, read thì ok, như một lúc update liên tục vào table đó. nó lock table lại, k cẩn thận một số trường hơp delay một tá queue process trong mysql.
Table nào ko update mới dùng MyISAM thôi nè bác, ví dụ như tag thường là insert vào, còn lại update realtime là product,post. Ae nào soạn content sẵn thì MyISAM là an toàn hơn