Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
[sql 2005] Regola generale
lunedì 03 maggio 2010 - 20.07
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
tankian
Profilo
| Junior Member
83
messaggi | Data Invio:
lun 3 mag 2010 - 20:07
Ciao,
Il mio è un problema più di "logica" di database che di pratica. Cerco di fare un esempio, spero di non essere troppo vago.
Ipotizzando di avere a che fare con due tabelle, tab1 e tab2,
La tab1 contiene 10 record distinti da un ID.
La TAB2 si rifà alla TAB1 tramite l'ID ed ha per ogni ID 250.000 Record.
Naturalmente ad ogni INSERT/UPDATE/DELETE nella TAB1 viene effettuata la stessa operazione per quell'ID nella tab2.
Avendo una situazione del genere, capite subito che aumentando i record nella tab1, la tab2 aumenta a dismisura, diminuendo a sua volta le performance in maniera esponenziale.
Ora, ho pensato alla soluzione di creare una tabella per ogni ID della tab1, quindi con 10 record, 10 tabelle con 250.000 record ciasquna (invece di un'unica tabella con 2.500.000 record).
Essendo abbastanza inesperto in materia, non vorrei di andare a fare qualcosa di "spiacevole"; quindi chiedo, vi sembra proponibile come soluzione? o avete qualche altro suggerimento?
grazie in antiipo
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 3 mag 2010 - 20:59
>Ciao,
Ciao
>Ipotizzando di avere a che fare con due tabelle, tab1 e tab2,
>La tab1 contiene 10 record distinti da un ID.
>La TAB2 si rifà alla TAB1 tramite l'ID ed ha per ogni ID 250.000
>Record.
E come mai ha così tanti record "figli"? Cosa li contraddistingue?
>Ora, ho pensato alla soluzione di creare una tabella per ogni
>ID della tab1, quindi con 10 record, 10 tabelle con 250.000 record
>ciasquna (invece di un'unica tabella con 2.500.000 record).
Gli ID della tab1 non saranno sempre 10, quindi dovresti archittettare una soluzione molto macchinosa di creazione dinamica di oggetti, naming convention e successiva implementazione applicativa molto intrecciata e piena di considerazioni. Pensa anche alle eliminazioni, alle modifiche, insomma, viene un cestone di considerazioni che forse puoi evitarti con un partizionamento. Considera poi anche il tipo di operazioni che devi effettuare principalmente sulla tabella, la leggerai spesso? Leggerai sempre una porzione? C'è una data che discrimina un ambiente ONLINE da uno STORICO? Puoi pensare di fare una tabella partizionata su di una chiave (che può essere l'id, oppure ciò che contraddistingue appunto i 250000 record figli). Puoi pensare ad una tabella dei dati online ed uno storage di storico, ecc..
Per saperne di più sul partizionamento guarda qui:
http://msdn.microsoft.com/en-us/library/ms345146
(SQL.90).aspx
>grazie in antiipo
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
tankian
Profilo
| Junior Member
83
messaggi | Data Invio:
mar 4 mag 2010 - 10:47
Ciao, ho capito più o meno come funzionano le partition table.
Effettivamente penso che facciano proprio al caso mio, anche se mi sn sembrate un pò più complesse del workaround che avevo pensato
, cmq adesso le studierò meglio, Grazie!
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !