Domanda

Mi chiedo quanto sia lento il passaggio tra 2 database su ogni chiamata di ogni pagina di un sito. Il sito ha molti database diversi per client diversi, insieme a un "globale" database utilizzato per alcune impostazioni generali. Mi chiedo se ci sarebbe molto tempo aggiunto per l'esecuzione di ogni script se dovesse connettersi al database, selezionare un DB, fare una query o 2, passare a un altro DB e quindi completare la generazione della pagina. Potrei anche ripetere i dati in ogni DB, ho solo bisogno di mantenerli (cambieranno solo durante l'aggiornamento).

Quindi, alla fine, quanto è veloce mysql_select_db () ?

Modifica: Sì, potrei collegarmi a ciascun DB separatamente, ma poiché questa è spesso la parte più lenta di qualsiasi script PHP, mi piacerebbe evitarlo, soprattutto perché si trova su ogni pagina. (È lento perché PHP deve fare una sorta di risoluzione dell'indirizzo (sia esso un IP o un nome host) e quindi MySQL deve controllare i parametri di accesso entrambe le volte.)

È stato utile?

Soluzione

Supponendo che entrambi i database siano sullo stesso computer, non è necessario eseguire mysql_select_db. Puoi semplicemente specificare il database nelle query. Ad esempio;

SELECT * FROM db1.table1;

È inoltre possibile aprire due connessioni e utilizzare l'oggetto DB restituito dalla chiamata di connessione e utilizzare questi due oggetti per selezionare i database e passare a tutte le chiamate. La connessione al database è un parametro facoltativo su tutte le chiamate db mysql, basta controllare i documenti.

Altri suggerimenti

Stai ponendo due domande abbastanza diverse.

  1. Connessione a più istanze di database

  2. Cambio di schemi di database predefiniti.

MySQL è noto per avere tempi di configurazione della connessione piuttosto rapidi; effettuare due chiamate mysql_connect () a server diversi è a malapena più costoso di uno.

La chiamata mysql_select_db () è esattamente la stessa dell'istruzione USE e modifica semplicemente lo schema del database predefinito per riferimenti di tabella non qualificati.

Fai attenzione al tuo uso del termine 'database' intorno a MySQL: ha due significati diversi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top