我們有一個分析應用程序,它允許用戶運行多個不同的報告。我們有一個主 - 從MySQL數據庫設置。在沒有用完MySQL連接的情況下存儲網站訪問者
其中一個,我們跟蹤是我們的客戶網站的訪問者的事情。每當訪問者登陸我們的客戶網站時,我們會在主數據庫中寫入各種信息。問題在於,在高峯流量時間(通常在晚上),我們正在使用MySQL數據庫連接。我們知道我們需要以某種方式對正在撰寫的訪問者數據進行分類然而,我們用來銷售本產品的一件事是,您可以在網站上看到訪客數據。我們可以允許網站上的訪問者與報告中可用的數據之間有短暫的延遲(1-2分鐘)。
什麼是分期訪問者數據的最佳方式?是否有另一種方法可以擴展?
這是造成鎖定的查詢是:
SELECT VisitID,VistSourceID
FROM visitorvisits
LEFT JOIN visitornumbers
ON VinuVlviID=VlviID
WHERE vistNosID='12345' AND
VistCampaignID='1' AND
('2013-04-03 14:30:48' >= DATE_ADD(VistDateStart, INTERVAL VistTimeStart HOUR_SECOND))
AND ('2013-04-03 14:30:48' <= DATE_ADD(VistDateEnd, INTERVAL VistTimeEnd HOUR_SECOND)
OR VistStatusCode='1')
這個stament的expalin是:
+----+-------------+--------------------------+--------+-----------------------------------------------------------------------------------+----------------+---------+----------------------------------------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------------------+--------+-----------------------------------------------------------------------------------+----------------+---------+----------------------------------------------+------+-------------+
| 1 | SIMPLE | visitornumbers | ref | idx_vistNosID,idx_visitNosVisitID | idx_vistNoID | 4 | const | 4527 | Using where |
| 1 | SIMPLE | visitorvisits | eq_ref | PRIMARY,idx_VistCampaignID,idx_VistStatusCode,idx_VistCampaignID_VistDateStart_VistVistorID | PRIMARY | 4 | mhdblive.visitorvisits.visitNosVisitID | 1 | Using where |
+----+-------------+--------------------------+--------+-----------------------------------------------------------------------------------+----------------+---------+----------------------------------------------+------+-------------+
你的網站是用什麼書寫的? PHP?紅寶石? Java的? – 2013-04-30 10:26:13
我們的應用程序是用PHP編寫的。 – mh1 2013-04-30 10:31:54