Tolong pilih kategori sesuai, jenis posting (pertanyaan atau bukan) dan sertakan tag/topik yang sesuai misal komputer, php, mysql, dll.
Promosi atau posting tidak pada tempatnya akan kami hapus.
Mencantumkan kode program di posting Anda, tolong ikuti aturan yang sesuai, baca http://diskusiweb.com/discussion/39204/aturan-cara-menyisipkan-kode-program-di-diskusiweb

Baca cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

TANYA - Optimasi Database MySQL

salam kenal master2 sekalian, nubie mau tanya...

saya punya database MySQL, table engine MyISAM. setiap hari update data 10K baris data yg diinput langsung dari file *.TXT. data di DB cuma utk ditampilkan atau delete via java. tiap kolom sudah pakai index, file my.cnf sudah diedit2.
tapi makin lama sepertinya semakin lambat utk update nya :neutral:

waktu buat DB saya ngikutin ref. dari >>> https://plus.google.com/+HarrySufehmi/posts/QuNBMAQqvVd

kira2 ada masukan utk meningkatkan performa DB...? atau perlu coba engine InnoDB...?

tks

Tanggapan

  • UP UP UP...

    karena kebanyakan data, hari ini table nya IN USE, gak bisa diakses. sudah direpair juga gak bisa :neutral:
  • Total row nya sampai berapa juta?

    Yg dikasih index bukan semua kolom kali, tapi kolom2 tertentu aja yg dipakai join atau dipakai di kondisi where, grouping.

    Lalu yg juga penting bagaimana cara mengambil data nya, secara umum sub query dan join akan lebih lambat.
  • skrng sudah 100jutaan, emng tidak semua kolom, hanya satu. Sya gk pake join left atau subquery, hanya insert standard. DB nya juga cuma buat simpan dan validasi kalau data hari ini ter-record
  • Bukannya index itu mempercepat query select tp memperlambat query insert ya?
  • metode terbaik biar query select dan insert bisa cepet gimana pak @newuser ? :smile:
  • edited December 2016
    http://dev.mysql.com/doc/refman/5.7/en/insert-speed.html
    "The size of the table slows down the insertion of indexes by log N, assuming B-tree indexes."

    IMHO:
    paling enak buat table temporary,
    LOAD DATA INFILE ke table temporary itu.
    copy data dari table temporary ke table target pake ON DUPLICATE KEY UPDATE
    note: table temporary gak pake index sama sekali.
    SHOW COLUMNS FROM tbl_target;
    INSERT INTO tbl_target
    SELECT * FROM tbl_temp
    ON DUPLICATE KEY UPDATE field1 = VALUES(field1), field2 = VALUES(field2);


    kalo dah selesai bisa di truncate table temporary nya.

    Dari ref mysql buat referensi:
    You can use the following methods to speed up inserts:

    If you are inserting many rows from the same client at the same time, use INSERT statements with multiple VALUES lists to insert several rows at a time. This is considerably faster (many times faster in some cases) than using separate single-row INSERT statements. If you are adding data to a nonempty table, you can tune the bulk_insert_buffer_size variable to make data insertion even faster. See Section 6.1.5, “Server System Variables”.

    When loading a table from a text file, use LOAD DATA INFILE. This is usually 20 times faster than using INSERT statements. See Section 14.2.6, “LOAD DATA INFILE Syntax”.

    Take advantage of the fact that columns have default values. Insert values explicitly only when the value to be inserted differs from the default. This reduces the parsing that MySQL must do and improves the insert speed.

    See Section 9.5.5, “Bulk Data Loading for InnoDB Tables” for tips specific to InnoDB tables.

    See Section 9.6.2, “Bulk Data Loading for MyISAM Tables” for tips specific to MyISAM tables.


    ini dari ref mysql nya. baca commentnya:
    "If you are inserting a lot of rows from different clients, you can get higher speed by using the INSERT DELAYED statement."
  • saya sudah pakai query LOAD DATA INFILE dan selanjutnya akan saya coba pake temporary table.

    btw tks advice nya pak @newuser
Sign In or Register to comment.