banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Hỏi về cơ chế hoạt động của memcached với mysql  XML
  [Question]   Hỏi về cơ chế hoạt động của memcached với mysql 16/12/2008 06:55:07 (+0700) | #1 | 162622
[Avatar]
giobuon
Member

[Minus]    0    [Plus]
Joined: 10/09/2006 06:25:46
Messages: 72
Offline
[Profile] [PM]
Mình đọc qua một số tài liệu về memcached nhưng không thấy đoạn nào nói về cơ chế đảm bảo cache sẽ chính xác với database. Nghĩa là khi ta cache một kết quả query sau đó database bị thay đổi thì memcached có cơ chế gì để biết là cache của nó đã không còn cập nhật nữa? Hay ta chỉ dùng memcached cho các bảng ít khi bị thay đổi? Điều này mình nghĩ cũng không hợp lý. Có rất nhiều trang rất lớn sử dụng memcached. Nếu mà chỉ dùng memcached cho dữ liệu ít thay đổi thì cũng chả tích sự gì lắm. Có bác nào soi sáng hộ mình cái smilie
[Up] [Print Copy]
  [Question]   Re: Hỏi về cơ chế hoạt động của memcached với mysql 17/12/2008 04:22:08 (+0700) | #2 | 162713
hellloeverybody
Member

[Minus]    0    [Plus]
Joined: 15/12/2006 16:16:04
Messages: 13
Offline
[Profile] [PM]
Đọc trước:
http://vn2.php.net/manual/en/intro.memcache.php

1K bộ nhớ hay một câu truy vấn không cần thiết cũng phải tối ưu đặc biệt là đối các các website lớn có nhiều người truy cập. Đặt cache cho những bảng ít phải thay đổi sẽ giảm thiểu truy vấn khi không cần thiết, nó sẽ giúp tối ưu và tăng tốc độ load của site lên. smilie Lên đọc tài liệu và tìm hiểu trước khi hỏi smilie
[Up] [Print Copy]
  [Question]   Re: Hỏi về cơ chế hoạt động của memcached với mysql 17/12/2008 06:26:23 (+0700) | #3 | 162720
[Avatar]
giobuon
Member

[Minus]    0    [Plus]
Joined: 10/09/2006 06:25:46
Messages: 72
Offline
[Profile] [PM]
Cảm ơn bạn đã reply. Mình hứa là mình đã đọc về memcached nhiều hơn rất nhiều cái trang intro của php đấy. Mình công nhận là phải tối ưu từng chút một, nhưng phần lớn truy cập là vào những trang có dữ liệu thay đổi liên tục. Có những site bỏ ra hơn 20 server để chạy memcached thì mình không nghĩ là khả năng của nó chỉ có vậy.
[Up] [Print Copy]
  [Question]   Re: Hỏi về cơ chế hoạt động của memcached với mysql 17/12/2008 07:17:44 (+0700) | #4 | 162723
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
Memcached sử dụng cơ chế expiration, khi nhận được một request, nó (memcached) kiểm tra xem dữ liệu được yêu cầu có "hết hạn" không, nếu dữ liệu đã hết hạn, thì request được chuyển đến cho real database xử lí, memcached sẽ xoá đi cached items cũ và thay vào đó bằng cạched items mới .
http://www.socialtext.net/memcached/index.cgi?faq#item_expiration


Có những site bỏ ra hơn 20 server để chạy memcached thì mình không nghĩ là khả năng của nó chỉ có vậy 


Đọc câu này mình hơi ...choáng.
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Question]   Re: Hỏi về cơ chế hoạt động của memcached với mysql 17/12/2008 09:37:01 (+0700) | #5 | 162739
hellloeverybody
Member

[Minus]    0    [Plus]
Joined: 15/12/2006 16:16:04
Messages: 13
Offline
[Profile] [PM]
Hic hic! Bạn cho mình ví dụ site nào mà sài 20 con server gớm vậysmilie
[Up] [Print Copy]
  [Question]   Re: Hỏi về cơ chế hoạt động của memcached với mysql 17/12/2008 14:05:41 (+0700) | #6 | 162776
[Avatar]
giobuon
Member

[Minus]    0    [Plus]
Joined: 10/09/2006 06:25:46
Messages: 72
Offline
[Profile] [PM]
fotolog.com. http://highscalability.com/bunch-great-strategies-using-memcached-and-mysql-better-together
Cơ chế hết hạn đấy thì chả có gì để nói cả. Quản trị hệ thống set thời gian này. Có gì đảm bảo là nó sẽ hết hạn đúng khi database thay đổi?
[Up] [Print Copy]
  [Question]   Re: Hỏi về cơ chế hoạt động của memcached với mysql 17/12/2008 16:56:35 (+0700) | #7 | 162788
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
Bạn hỏi cơ chế, tôi nói cơ chế căn bản của nó. Nếu bạn có cơ chế hay hơn thì có thể chia sẻ cùng mọi người smilie
Bạn có biết cái cơ chế expiration time đó nó dựa vào đâu không?
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Question]   Re: Hỏi về cơ chế hoạt động của memcached với mysql 17/12/2008 23:24:45 (+0700) | #8 | 162803
[Avatar]
giobuon
Member

[Minus]    0    [Plus]
Joined: 10/09/2006 06:25:46
Messages: 72
Offline
[Profile] [PM]
Mình không hỏi về cơ chế chung chung. Mình hỏi thứ rất cụ thể, nếu bạn chưa rõ thì nên đọc lại câu hỏi của mình. Mình hỏi vì mình không biết và muốn biết, không phải để đánh đố, hay để đem ra thảo luận như mấy bác tay to.
Data expiry của memcached khá đơn giản, gồm có hai cơ chế:
1. Expiry khi hết bộ nhớ: Cái nào được sử dụng ít nhất sẽ bị evict và thay cái mới vào.
2. Do người đặt thời gian trong câu lệnh set (Lưu ý là nó chỉ bị evict khi có request set thêm chứ không phải ngay khi nó hết hạn).
[Up] [Print Copy]
  [Question]   Re: Hỏi về cơ chế hoạt động của memcached với mysql 23/12/2008 11:55:15 (+0700) | #9 | 163615
[Avatar]
giobuon
Member

[Minus]    0    [Plus]
Joined: 10/09/2006 06:25:46
Messages: 72
Offline
[Profile] [PM]
Sau một thời gian tìm hiểu mình rút ra một số điểm tóm tắt sau (CRMIIW):

-Memcached ko có cơ chế thẩm định tính chính xác của dữ liệu lưu trong nó. Điều này có thể thấy quá cấu trúc hệ thống (memcached ko có bất cứ sự liên hệ nào với db, mà nằm độc lập). Người ta giải quyết vấn đề này bằng một vài cách nhưng cách mình thấy khả thi nhất là write trực tiếp vào memcached và sau một thời gian thì write những gì có trong memcached vào db. Tuy nhiên việc này cũng có nguy hiểm, ví dụ như khi chưa kịp write từ memcached vào db mà server memcached tèo chẳng hạn. Vì vậy không nên dùng cho những dữ liệu mang tính critical.

-Vậy memcached xịn ở chỗ nào mà người ta dùng nhiều vậy?
Ở mức nhỏ người ta thường dùng memcached để làm nơi lưu trữ dữ liệu chia sẻ, thường là lưu session. Cái này rất tiện lợi nhất là trong các kiểu loadbalancing đơn giản như nginx hay pound, khỏi phải lo tới vấn đề persistence session.

Ở mức lớn hơn một chút, người ta dùng memcached để giảm thiểu read từ db, cho những dữ liệu ít thay đổi và cần tính toán, query phức tạp, tốn tài nguyên.
Cao hơn nữa, người ta dùng memcached để shard db (chia nhỏ db theo chiều ngang, tức là theo row). Hiệu năng của nó vẫn còn gây tranh cãi khi so sánh với việc partition db.

Nói chung càng lớn thì càng phức tạp. Bạn sẽ phải xây dựng hẳn các thư viện chỉ để xử lý cho memcached. Is it worth it?
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|