2010-07-11 5 views
7

So zum Beispiel, der Benutzer loggt sich ein, und das System speichert Informationen über sie Beispiel: birth date, ist also schneller, um diese Informationen aus der Sitzung zu bekommen, oder die Datenbank dafür abzufragen?Sind Sitzungen schneller als Abfragen der Datenbank?

Meine Idee war, dass der Benutzer nur einmal anmelden muss und die Sitzung immer da ist, aber wenn ich die Datenbank abfrage, wenn das Benutzer die Seite neu lädt, muss das System immer wieder abfragen, statt zu bekommen die Daten von einem temporären 'Ort'.

Ich benutze PHP und MySQL.

+0

Welche Programmiersprache und dbms verwenden Sie? –

+0

Ich habe meine Antwort bearbeitet. – Adam

Antwort

9

Für fast jede Sprache und Datenbank, ja. Eine Benutzersitzung wird normalerweise nur im Speicher gespeichert, und es ist nur eine Frage des Nachschlagens. Ein Datenbankzugriff beinhaltet normalerweise eine Socket-Kommunikation mit einem anderen Prozess. Im Vergleich eher schwer.

+2

Soweit ich weiß, werden Sitzungen in PHP standardmäßig in Dateien gespeichert, nicht im Speicher. Für jeden Treffer muss diese Session-Datei aus dem Dateisystem gelesen und in das PHP-Array geparst werden. Sie haben Recht, die Sitzung sollte schneller sein, aber der Grund ist - Sie müssen die Sitzungsdaten des Benutzers aus anderen Gründen laden und der Geburtstag, über den er spricht, wird schon da sein - Sie müssen die Datenbank nicht mehr fragen. – dwich

1

Wie machst du alles? Sie können die Benutzeranmeldeinformationen auf der Anmeldeseite überprüfen und dort müssen Sie eine Abfrage erstellen, um zu überprüfen, ob die vom Benutzer angegebenen Kriterien in der Datenbank übereinstimmen. Wenn dies der Fall ist, speichern Sie sie in der Sitzung und fahren dann basierend auf dieser Sitzung fort.

Es geht also nicht um Vergleich, man muss die Datenbank einmalig auf der Anmeldeseite abfragen und Session danach verwenden.

Login Seite

// database query run once only at this page 
// if user exits, you store it into session else redirect with an error message 
+0

Ich weiß, wie es geht, meine Frage war schneller als Datenbankabfrage oder nicht :) – Adam

+1

@CIRK: Natürlich ist Sitzung schneller, aber dann müssen Sie für die Sicherheit auch Rechnung. – Sarfraz

+0

Dank Sicherheit ist ein ganz neues Thema, danke für das Sagen, ich habe eine neue Frage erstellt, überprüfen Sie es: http: //stackoverflow.com/questions/3224286/php-what-are-the-risks-of-php-sessions – Adam

0

Eigentlich ist Carl Antwort nicht ganz korrekt, und sagen: "MySql" entweder nicht hilft.

Sie sehen, Datenbanksysteme wie MySQL haben "Speicher-Engines". Diese schreiben normalerweise in Dateien, aber es gibt einige, die in den Speicher schreiben (MEMORY), andere schreiben Speicher, behalten aber eine Dateisicherung (MyISAM) und einige nach/dev/null (BLACKHOLE).

So ist es hängt alles von der Speicher-Engine:

  • MyISAM - Standard-Engine ab MySQL 3.23 mit großer Leistung
  • MEMORY - Hash basiert, die im Speicher gespeichert, nützlich für temporäre Tabellen
  • InnoDB - Unterstützt Transaktionen, Sperren auf Zeilenebene und Fremdschlüssel
  • BerkeleyDB - Unterstützt Transaktionen und Sperren auf Seitenebene
  • BLACKHOLE -/dev/null Speicher-Engine (alles, was Sie es schreiben verschwindet)
  • Beispiel - Beispiel Speicher-Engine
  • ARCHIV - Archiv-Speicher-Engine
  • CSV - CSV-Speicher-Engine
  • ndbcluster - Clustered, fehlertolerante, speicherbasierte Tabellen
  • FEDERATED - Federated MySQL-Speicher-Engine
  • MRG_MYISAM - Sammlung identischer MyISAM-Tabellen
  • ISAM - Veraltete Speicher-Engine

(Liste von PhpMyAdmin Egines-Liste)

+0

also, wenn ich 'MEMORY' verwende, funktioniert es wie die' SESSION'? – Adam

+0

Diese "Antwort" ist bestenfalls ergänzend und geht nicht auf die Frage ein. – rvdavid

+0

@rvdavid - Es befasst sich mit der Frage, das OP muss nur eine Option auswählen. – Christian

Verwandte Themen