Il costo del tempo è costante quando si inserisce i dati in blocco in una tabella indicizzata?

StackOverflow https://stackoverflow.com/questions/2478017

  •  21-09-2019
  •  | 
  •  

Domanda

Ho creato una tabella di archivio che memorizzerà i dati solo per la selezione.

Ogni giorno ci sarà un programma per trasferire un lotto di record nella tabella dell'archivio. Esistono diverse colonne indicizzate; mentre altri non lo sono.

Sono interessato al costo del tempo per inserimento batch:
- 1 ° inserimento batch: N1
- 2 ° inserimento in batch: N2
- Inserzione del terzo batch: N3

La domanda è: N1, N2 e N3 saranno approssimativamente gli stessi o N3> N2> N1?

Cioè, il costo del tempo sarà costante o incrementale, con l'esistenza di diversi indici?

Tutti gli indici non sono cluster.

La struttura della tabella dell'archivio è questa:

create table document (
   doc_id   int unsigned primary key,
   owner_id int,  -- indexed
   title    smalltext,
   country  char(2),
   year     year(4),
   time     datetime,

   key ix_owner(owner_id)
}
È stato utile?

Soluzione

Il costo sarà incrementale, O(log(n)).

In pratica, avrai un passo sul grafico quando la dimensione dell'indice raggiunge una determinata soglia e le pagine dell'indice smetteranno di adattarsi alla cache

La dimensione della cache è definita da key_buffer_size in MyISAM e innodb_buffer_pool_size in InnoDB.

Prima di questa soglia, il costo sarà proporzionale al tempo di ricerca della memoria, dopo la soglia, il costo sarà proporzionale al tempo di ricerca del disco (tutti moltiplicati per il log(n) Certo)

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