2016-06-20 10 views
0

A DB verfügt derzeit über eine Tabelle some_table:Macht es Sinn, zwischenzuspeichern und zu lesen, wenn ich sicher bin, dass ich Daten von der DB lesen muss?

conn_id  data 
id1 - - - - - a 
id1 - - - - - b 
id2 - - - - - c 
id3 - - - - - d 

Jetzt ist mein Code hat, dies zu tun:

do_something([id1,id2,id3,id4]) 

ich momentan tun eine MySQL-Abfrage:

select * from some_table where conn_id in (id1, id2, id3, id4); 

und erzeugen dies:

{ 
    id1 => [a,b], 
    id2 => [c], 
    id3 => [d] 
} 

Wenn ich diese Daten zwischenspeichern würde, werde ich beim nächsten Mal die Schlüssel für ID1, ID2 und ID3 im Cache finden. Da ID4 weder im Cache noch in der DB existiert, muss ich immer die DB abfragen.

Ist es sinnvoll, diese Daten zwischenzuspeichern?

Ich kann Daten für ID1, ID2, ID3 aus dem Cache abrufen. Aber für ID4 mache ich eine MySQL-Abfrage:

select * from some_table where id in (id4) 

Welche wäre leistungsfähiger? Zu einer Zeit kann ich 200 IDs in der Anfrage (do_something) haben, aus denen eine beliebige Anzahl nicht existent sein kann.

Antwort

0

Things

  1. Wenn Sie Caching tun zu klären. Sie müssen sicherstellen, dass die Daten in Ihrem Cache perfekt mit der primären Datenquelle (DB) synchronisiert sind.
  2. Wenn Daten in DB geändert wird, müssen Sie

nun den Cache ungültig machen die Frage

Warm up Cache für das 1. Mal mit select * Anfrage zu beantworten. Danach für jede Einfügung oder Aktualisierung zu Ihrer Datenbank handhaben Sie sie in Ihrem Zwischenspeicher auch. Damit Sie vermeiden können, DB für fortlaufende Selektionen

abzufragen