banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Messages posted by: tmlinhkct  XML
Profile for tmlinhkct Messages posted by tmlinhkct [ number of posts not being displayed on this page: 0 ]
 

myquartz wrote:

henryhuy wrote:
Xin gừi bác cấu trúc table của mình như sau :
1 id int(250)
2 content_id varchar(250)
3 content_category_id varchar(255)
4 title text
5 sub_title text
6 detail longtext
7 image varchar(250)
8 idlang varchar(250)
9 show_content int(2)
10 dateadd datetime

Câu lệnh SELECT mỗi lần lấy tin mới nhất của mình thế này : "select id, content_id, content_category_id, title, sub_title, image, idlang, show_content, dateadd from content order by id desc limit 0,10"

Nếu muốn tạo INDEX thì mình làm thế nào, sorry mình hỏi hơi kỹ vì chưa làm INDEX lần nào cả

Mình có đọc 1 số tut trên mạng thì hướng dẫn là ALTER TABLE content ADD INDEX idx_id(id); nhưng mình không rõ là khi nào nên ALTER TABLE cả, có phải là mỗi lần select 10 tin mới ra chăng ?

Cảm ơn các bác nhiều. 


Ợ. Vậy là bạn học lập trình SQL mà không học về ... index của CSDL, một thứ quan trọng sống còn của nó (mặc dù hệ thống vẫn chạy khi không có nó), có thể đây là sự thiếu sót không chỉ mỗi bạn mắc phải đâu.
Cột ID của bạn có phải là primary key? nếu là primary key rồi thì không cần index nữa vì nó đã được index rồi (primary key là 1 dạng index, với thuộc tính unique). Việc tạo index chỉ 1 lần kèm với tạo bảng, và thi thoảng thì phải bảo dưỡng nó thôi (analyze table), alter table là nhóm DDL như create table...

Nếu cột ID của bạn là số tăng dần, mỗi bài tin là tăng 1 đơn vị, bạn lấy 10 tin mới nhất thì sửa 1 chút thế này:

select id, content_id, content_category_id, title, sub_title, image, idlang, show_content, dateadd from content where id >= (select max(id)-10 from content) order by id desc limit 0,10

Nếu lo ngại có sự delete trong content, gây lỗ thủng id, thiếu, thì max(id) - 10 thay bằng - 20, - 30... thậm chí 100 vẫn là rất tốt cho bảng. nó đảm bảo rằng dù bảng có tăng kích thước lên thì tốc độ vẫn không thay đổi nhiều. 

mình xin đính chính chút là nếu cột id đã là primary key rồi thì không cần dùng WHERE... nữa mà chiến luôn:
Code:
select id, content_id, content_category_id, title, sub_title, image, idlang, show_content, dateadd from content order by id desc limit 0,10

quangteospk wrote:
Mình thấy có gì đó không đúng ở cách tính chịu tải dựa trên bandwidth thì phải.

Ví dụng mình dùng pingdom-tool để đo thử trang vnexpress, page size vào home-page là 3.9MB.

Giải dụ vnexpress thuê bw là 1Gbps (khá cao), tương đương 128 Megabyte/s vậy tính ra với băng thông đó, chưa tính mức độ chịu tải về hardware thì chỉ với xấp xỉ 33 req là hết băng thông. Không biết có gì sai ở đây không nhỉ?

 


Đó là tính theo lượt người dùng mới. Tức là user mới vô vnexpress lần đầu sẽ phải load toàn bộ site về. Còn từ lần 2 trở đi, do site đã cache trên máy user rồi nên load lại site sẽ chiếm ít băng thông hơn.

linshan wrote:
bắt đầu đoạn "3 zombie" sẽ tìm được vấn đề 

đây mới là nguyên nhân chính

Framer wrote:
Thanks các bác đã cho ý kiến. Em thực sự thấy Vanish cache ổn hơn nginx nhiều. Em sẽ giữ mô hình này smilie 

Mình cũng từng dùng vanish cache cho 1 hệ thống site báo nhỏ. Dùng để cache static file, controll ram tốt hơn nginx nhiều (mình đã test ab full đường truyền 12 Mbps).
dùng URL Rewrite for IIS ấy.
Cậu muốn thông được với máy thật thì phải tạo thêm 1 card mạng ảo cho cái vmnet.
vào edit chọn virtual network editor => chọn card vmnet đang dùng => chọn host only => tick vào Connect a virtual host adapter to this network.
cài linux xong rùi nếu bạn k0 dùng đồ hoạ thì bạn dùng mấy tool ssh vào cho dễ làm. cần gì vmware tool cho rắc rối .smilie
tại sao bạn lại chmod /home/virtual sang postfix:postfix để làm gì....
theo như trên thì bạn nên :

tạo 1 user virtual: useradd virtual -u 125 -g 125 (tạo user virtual có UID/GID=125/125)
trong main.cf : home_mailbox = Maildir/
trong dovecot.conf: mail_location = maildir:/home/virtual/%d/%n/Maildir

tức là bạn đang tạo 1 user mà trong thư mục home của nó chứa mailbox. sau đó bạn cấu hình để postfix và dovecot móc vào mailbox thông qua user này.
phải cáu hình route giữa 1 mạng LAN đó.
http://my.opera.com/okabi/blog/static-route-with-linux-cau-hinh-route-tinh-tren-linux-2
@Ikut3
cái này chỉ là hạn chế tính trạng split brain.
còn khi xảy ra split brain rồi thì làm sao để khắc phục 1 cách tự động được nhỉ....

Ikut3 wrote:
Hi ngtrongtri
2. Trong trường hợp việc connect giữa 2 máy MySQL có vấn đề, 2 con không nhận được tín hiệu của nhau trong 1 khoảng thời gian nhất định. Bạn sẽ bị Split Brain. Đối với trường hợp này bạn phải giải quyết ra sao ? :-D
Cheers, 

cái này em thấy đối với active/active thì vào /etc/drbd.d/global_common.conf

net {
allow-two-primaries yes;
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri call-pri-lost-after-sb;
}
 


khi phát hiện ra split brain là tự động reboot trên 1 node đc coi là mất dữ liệu. sau reboot thì connect lại bt.

với acive/passive thì chĩ có mỗi manual còn auto thì hok bít.smilie

 

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