Whispere

Whispere

@Whispere

My BIO is empty. Try checking my profile later.

Aug 11, 2020

INSERT & chunk, proč je skript s chunk(100) rychlejší než s chunk(1000)

Whispere odpovedal v téme INSERT & chunk, proč je skript s chunk(100) rychlejší než s chunk(1000)

Nn, nepovedlo se mi to zrychlit. Udělal jsem si akorát test a měřil při jakém rozdělení je to nejrychlejší (rozdíly do sekundy) a to nastavil. Ale samotnou příčinu jsem neobjevil a tedy nevyřešil.

Jun 12, 2020

INSERT & chunk, proč je skript s chunk(100) rychlejší než s chunk(1000)

Whispere vytvoril tému INSERT & chunk, proč je skript s chunk(100) rychlejší než s chunk(1000)

Ahoj, mám aplikaci postavenou na Laravel 6.18.16 a řeším jedno zvláštní chování.

Mám skript:

       $array = [];
       for($i = 0; $i < 10000; $i++)
       {
           $array[] = [
             'parent_id' =>  1,
             'slot'         =>  1,
             'status'       =>  1,
             'inserted'     =>  1,
             'activity'     =>  'SLEEPING',
             'time'         =>  '00:00',
             'created_at'   =>  date('Y-m-d H:i:s'),
             'updated_at'   =>  date('Y-m-d H:i:s')
          ];
       }

foreach(array_chunk($array, 100) as $chunk) {
   Table::insert($chunk);
}

Pokud v array_chunk(), zvýším parametr na 2500, tak celý skript se provádí 4x pomaleji. Pokud to zvýším třeba na 5000, tak ještě výrazně více. Nejrychlejší je to paradoxně při vkládání bez rozdělování dat, tedy co řádek, to jeden insert. Blíží se mu jen hodnoty rozdělení po 70 až 100 řádcích/insert. Když se číslo zvýší, celkový běh skriptu také hodně naroste.

Dle logiky by to mělo být obráceně. Ví někdo čím by to mohlo být?