• User Attivo

    [MySQL] Query su più tabelle identiche, cerco il metodo migliore

    Salve,
    devo sviluppare un Back-End di un applicazione e-commerce con utilizzo "multi-utente", dove ogni utente inserisce i propri prodotti.

    Faccio un esempio limite...:

    • nell'e-commerce ci saranno 1.000 utenti i quali inseriscono 1.000 prodotti ciascuno, saranno presenti 1.000.000 prodotti.
    • l'e-commerce avrà "molte" query al secondo per visualizzare i prodotti.

    In un caso come questo per le prestazioni è meglio:

    1. creare più tabelle: "products_user1, products_user2, products_user3", etc..., e interrogare le tabelle contemporaneamente con una query in "UNION"
    2. creare una sola tabella "products" con milioni di record "nel tempo..." e riportare l'id_user come riferimento per la gestione.

    Quale è il limite di record oltre il quale una singola tabella deve essere spezzata in più tabelle come dice il punto 1) ??
    Quali sono le caratteristiche generali migliori per gestire con una singola tabella: InnoDB + DYNAMIC + Utf8 + "Index type UNIQUE + Index using BTREE" + campi vuoti: NOT NULL ??

    Grazie molte.


  • User

    ciao
    ti parlo per esperienza personale. Ho tabelle mysql con 100Milioni di record, se le usi con query che sfruttano gli indici e non richiedono full scan (in alcuni casi non puoi farne a meno), richiedono pochi secondi.
    Se hai possibilità di configurare mySql puoi aumentare il numero di processi paralleli e le risorse di memoria per il tipo di engine che usi, inoltre prediligi un hosting con SSD.
    Su pochi Milioni di record, con query che lavorano sempre sugli indici!, mySql regge bene.
    Ti consiglio utilizzo innoDb, sia per gestione transazioni che per performance (su tabelle grandi sono anche 2volte più veloci)
    Se i numeri sono quelli che hai detto metti tutto su una tabella.


  • User Attivo

    @daniele1974 said:

    ciao
    ti parlo per esperienza personale. Ho tabelle mysql con 100Milioni di record, se le usi con query che sfruttano gli indici e non richiedono full scan (in alcuni casi non puoi farne a meno), richiedono pochi secondi.
    Se hai possibilità di configurare mySql puoi aumentare il numero di processi paralleli e le risorse di memoria per il tipo di engine che usi, inoltre prediligi un hosting con SSD.
    Su pochi Milioni di record, con query che lavorano sempre sugli indici!, mySql regge bene.
    Ti consiglio utilizzo innoDb, sia per gestione transazioni che per performance (su tabelle grandi sono anche 2volte più veloci)
    Se i numeri sono quelli che hai detto metti tutto su una tabella.

    Ok, ti ringrazio per la tua conferma su quello che pensavo e speravo, ciao!