Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Mysql 4.1 indici tabella 100000 record , velocizzare il tutto

    Ciao a tutti
    Ho una tabella in mysql con più di 100 mila record, sul quale si effettuan una ricerca di record,
    ho notato che questa ricerca dura 2 o 3 secondi ogni volta che invia la query.
    Questa ricerca consiste nel trovare i record riguardanti delle telefonate, del tipo inzio chiamata > fine chiamata .

    L'engine del database è mysql 4.1
    la tabella non ha indici.

    Inserisco gli indici e faccio l'upgrade di mysql 5.0 ? questo può velocizzare il tutto?

  2. #2
    devi usare gli indici, servono proprio a quello.
    ci guadagni in velocità e il server ha meno carico.

    per sapere come mettere gli indici, se sai la query che impiega tempo, usa l'istruzione EXPLAIN e hai un idea di dove mettere gli indici, può anche essere necessario un indice con più campi.

    fai una query con
    EXPLAIN Select * from....

    e ti esce un riepilogo delle righe interessate ecc.

    su html.it c'è una guida su come interpretare il risultato di explain, altrimenti consulta il manuale mysql.

    non credo che l'upgrade serve per il motivo in oggetto.

  3. #3
    scusa volevo sapere
    Conviene farmi l'aggiornamente 4.1 a 5.0 a fronte di questo problema?

  4. #4
    per il problema specifico non serve fare l'aggiornamento.
    forse un piccolo miglioramento potresti averlo ma come effetto collaterale del miglioramento del motore, ma con 100.000 records è assurdo non avere indici.

    la soluzione al tuo problema sono gli indici, fermo restando che ci sono ragioni per effettuare il porting, ma solo il porting non serve.

    fai come ti ho già detto oppure posta la struttura del db e la tua query e vediamo dove mettere gli indici.
    magari posta anche il risultato di explain

    vedi che mysql ha dei log per ottimizzare le performance, tipo dump slow query ecc.

  5. #5
    Select Distinct(acctsessionID),callingstationid,calledsta tionid,max(Unix_timestamp(timestamp)),acctstatusty pe,Sipresponsecode from acc_radius where acctstatustype='Stop' and Sipresponsecode=200 group by acctsessionid limit 100;

    *************************** 1. row ***************************
    id: 1
    select_type: SIMPLE
    table: acc_radius
    type: ALL
    possible_keys: NULL
    key: NULL
    key_len: NULL
    ref: NULL
    rows: 1892423
    Extra: Using where; Using temporary; Using filesort
    1 row in set (0.00 sec)


    `TimeStamp` datetime NOT NULL default '0000-00-00 00:00:00',
    `AcctStatusType` varchar(128) NOT NULL default '',
    `SipResponseCode` int(10) unsigned NOT NULL default '0',
    `SipMethod` varchar(16) NOT NULL default '',
    `UserName` varchar(64) NOT NULL default '',
    `CallingStationId` varchar(128) NOT NULL default '',
    `CalledStationId` varchar(128) NOT NULL default '',
    `SipTranslatedRequestURI` varchar(128) NOT NULL default '',
    `AcctSessionId` varchar(128) NOT NULL default '',
    `SipToTag` varchar(128) NOT NULL default '',
    `SipFromTag` varchar(128) NOT NULL default '',
    `SipCseq` varchar(128) NOT NULL default '',
    `NASPort` int(10) unsigned NOT NULL default '0',
    `AccDelayTime` int(10) unsigned NOT NULL default '0',
    `NASIPAddress` varchar(45) NOT NULL default '',
    KEY `Index_1` USING BTREE (`TimeStamp`,`AcctStatusType`,`AcctSessionId`,`Sip Method`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

  6. #6
    prova a mettere un indice su acctsessionID e vedi se effettuando la query con explain cambia qualcosa.
    purtroppo non conosco mysql così approfonditamente per consigliarti in modo preciso.

    forse è il caso che scrivi sul forum mysql se qua non hai risposta.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.