Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3 4      [все]
 ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
сделал видео.
В этом видео - тест параллельной вставки данных в одну таблицу. Теория и практика развеивают мифы. Сравнение серверов Firebird 2.5, 3.0, Classic, SuperClassic, SuperServer.

Тут если вставить ссылку на ютуб, она вроде ембеддится, ну и ладно. Вопросы?
15 мар 17, 14:50    [20298165]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31036

Hello, Kdv!
You wrote on 15 марта 2017 г. 14:54:12:

Kdv
Вопросы?
Primary Key и вообще индексы есть?
(ютуб зарезан)

Posted via ActualForum NNTP Server 1.5

15 мар 17, 14:55    [20298204]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Мимопроходящий,

только ПК. таблица с целочисленными типами, запись 70-80 байт.
15 мар 17, 15:09    [20298286]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60869
Там на 15 минуте ошибка в тексте, AFAIU -
должно быть "отрыв от SC и CS".

Описание/код вставлятора есть где-то?

Posted via ActualForum NNTP Server 1.5

15 мар 17, 15:10    [20298296]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60869
Впрочем, досмотрел до конца,
тогда код не нужен, пожалуй. :)

Posted via ActualForum NNTP Server 1.5

15 мар 17, 15:11    [20298303]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31036

Hello, Kdv!
You wrote on 15 марта 2017 г. 15:15:17:

Kdv
> только ПК
ну дык! сериализация ж никуда не делась.
проверь без него.

Posted via ActualForum NNTP Server 1.5

15 мар 17, 15:16    [20298335]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Гаджимурадов Рустам
Описание/код вставлятора есть где-то?

сгенерированы скрипты для вставки, потом "запускатор" стартует партию ISQL с этими скриптами.
Гаджимурадов Рустам
Там на 15 минуте ошибка в тексте, AFAIU -
должно быть "отрыв от SC и CS".

черт, да, конечно.
15 мар 17, 15:16    [20298338]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Мимопроходящий
ну дык! сериализация ж никуда не делась.
проверь без него.

без него будет то же самое, только побыстрее. Собственно, Ковязин еще в 2015 году делал отдельный тест влияния "коротких" и "больших" ПК на вставку, и на миллионе записей и целочисленным ПК разница где-то в 2.5 раза, причем деградации нет.
А вот на строковом индексе - деградация идет почти сразу, уже с десятков тысяч записей.

Тест, конечно, надо перепроводить на 3.0.2, и у меня была мысль проверить совсем без индексов. Но пока повтор теста на втором месте по важности.

Кроме того, hvlad сказал, что в отличие от всего остального SuperServer 3.0 будет пытаться искать другую свободную страницу, если наткнется на лок. Но я это обдумывал, и пришел к выводу, что нифига это не даст, кроме вероятной "фрагментированности" страниц (которую тоже надо будет проверить при повторении теста).
15 мар 17, 15:29    [20298448]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10378
kdv,

а можно к этому видео, размещённом на ibase.ru приложить скрипты самого теста? Чтобы любой желающий мог попробовать у себя.
15 мар 17, 15:43    [20298538]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
kdv
Но я это обдумывал, и пришел к выводу, что нифига это не даст, кроме вероятной "фрагментированности" страниц (которую тоже надо будет проверить при повторении теста).
Плохо обдумывал
15 мар 17, 15:51    [20298588]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60869
hvlad> Плохо обдумывал

А что в 2.5 происходит при локе, ждёт или ищет другую?

Posted via ActualForum NNTP Server 1.5

15 мар 17, 16:00    [20298650]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10378
Гаджимурадов Рустам,

дык в 2.5 страницы по другому выделяются - одна за одной. А в 3.0 может выделяться пачками (эсктентами)
15 мар 17, 16:01    [20298657]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Симонов Денис
приложить скрипты самого теста?

может быть. А может и нет, в силу специфики "обвязки" для запуска isql. В минимальном варианте можно проверить на 1 и двух коннектах:
- создать таблицу
- сгенерить в ней млн записей (хоть ибэкспертом)
- экспортнуть эти данные в текст, это будет скрипт1
- разрезать скрипт1 пополам, это будет скрипт2
- померять время на 1м isql и на двух запущеных хоть с интервалом в 1 сек.

это так, чтобы не ждать.
15 мар 17, 16:04    [20298674]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
Симонов Денис
дык в 2.5 страницы по другому выделяются - одна за одной. А в 3.0 может выделяться пачками (эсктентами)
Именно. И поиск свободного места\не залоченной страницы осуществляется в пределах текущего экстента.
Не самый эффективный алгоритм, тут есть что улучшать.
15 мар 17, 16:15    [20298737]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49375

kdv
только ПК

В следующем тесте добавь один или два.

Posted via ActualForum NNTP Server 1.5

15 мар 17, 16:17    [20298754]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
o_v_a
Member

Откуда: Тула
Сообщений: 1105
Я на днях уж посмотрел. И, вроде, даже лайкнул. :)
15 мар 17, 16:31    [20298815]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Romanzek
Member

Откуда: Red Soft
Сообщений: 85
kdv,
интересует:
1. Сервер однопроцессорный или нет?
2. Диски SSD или железка?

Можно ли получить ваш набор в виде, годном для запуска?
17 мар 17, 13:28    [20305691]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Romanzek
Сервер однопроцессорный или нет?

какая разница, интересно? Особенно если посмотреть на результаты 1, 2 и 4 коннектов. Ядер-то 12.
И, сейчас точно не могу сказать, но явно процессор один, 6-ядерные на серверах вроде не бывают.
Romanzek
Диски SSD или железка?

вроде RAID из SATA-дисков. Точно не SSD.

скрипты возможно дадим, но позже. Перепроверять на 3.0.2 будем.
Однако, мне интересно - что вы хотите получить перепроверкой теста у себя? То есть, вы хотите сравнить с приведенными результатами, или вы ожидаете, что результаты на разных архитектурах будут как-то сильно отличаться от наших результатов?
17 мар 17, 14:47    [20306169]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31036

Hello, Kdv!
You wrote on 17 марта 2017 г. 14:57:23:

Kdv
> 6-ядерные на серверах вроде не бывают.
а для кого ж Intel 6-ядерные Xeon'ы клепает?

Posted via ActualForum NNTP Server 1.5

17 мар 17, 14:58    [20306241]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8493
kdv
6-ядерные на серверах вроде не бывают.
у нас пара таких в сервере.
17 мар 17, 15:02    [20306256]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Romanzek
Member

Откуда: Red Soft
Сообщений: 85
kdv
Romanzek
Сервер однопроцессорный или нет?

какая разница, интересно? Особенно если посмотреть на результаты 1, 2 и 4 коннектов. Ядер-то 12.
И, сейчас точно не могу сказать, но явно процессор один, 6-ядерные на серверах вроде не бывают.

Разница может быть очень существенной. Так как CFS ;-)
Более того, там еще от модели процессора зависит поведение планировщика.
17 мар 17, 15:59    [20306578]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Romanzek
Member

Откуда: Red Soft
Сообщений: 85
мы кстати тоже проводили подобные тесты. Но не с целью доказать, что производительность в нескольких потоках снижается - это мы и так понимаем. Наша цель была нащупать предел, после которого наступает серверный коллапс. То есть производительность падает до нуля (что и случалось у нас в продакшине). Но, к сожалению, синтетикой это нащупать оказалось крайне тяжело. Пришлось делать полноценный нагрузочный тест в приложении.
17 мар 17, 16:13    [20306630]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Коваленко Дмитрий
Member

Откуда: Липецк
Сообщений: 559
kdv,

У меня c FB3 SS получилась немного другая картина.

6950X (10C:20T)/128GB/Win10.

FB 3.0.2.32692 x64 SuperServer.

DefaultDbCachePages = 200000
MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

База на RAM диске. Страница 16KB. FW: OFF.

Тестовая таблица - 1 колонка (BIGINT, PK). Есть триггер.

Перед каждым запуском база приводится к исходному состоянию.

На момент проведения этих тестов FB уже накрутил 200 часов (User Time), но перегружать я его не буду.

Вставка 1 млн записей:
потоков  время(сек)
1 128
2 93
4 51
8 36
10 34
20 33

Вставка 10 млн записей (пробовал только один раз):

1 1306
2 640
4 391
8 319
10 315
20 313

+ Код теста на C#

using System;
using System.IO;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using structure_lib=lcpi.lib.structure;
using xdb=lcpi.data.oledb;

namespace Sample_024{
////////////////////////////////////////////////////////////////////////////////
//class Program

class Program
{
 public const string c_prog_arg__cn_str       = "cn_str";
 public const string c_prog_arg__thread_count = "thread_count";
 public const string c_prog_arg__rec_num      = "rec_num";
 public const string c_prog_arg__log_file     = "log_file";
 public const string c_prog_arg__summary_file = "summary_file";

 //-----------------------------------------------------------------------
 private static int Main()
 {
  int result = 0;

  try
  {
   result=Exec();
  }
  catch(Exception e)
  {
   ++result;
   Console.WriteLine("ERROR: {0}",e.Message);
  }//catch

  return result;
 }//Main

 //-----------------------------------------------------------------------
 private static int Exec()
 {
  int errCount=0;

  var cmdArgs = new structure_lib.t_command_line_parser('/');

  cmdArgs.reg_arg
   (c_prog_arg__cn_str,
    structure_lib.t_command_line_argument_flags.with_value);

  cmdArgs.reg_arg
   (c_prog_arg__thread_count,
    structure_lib.t_command_line_argument_flags.with_value);

  cmdArgs.reg_arg
   (c_prog_arg__rec_num,
    structure_lib.t_command_line_argument_flags.with_value);

  cmdArgs.reg_arg
   (c_prog_arg__log_file,
    structure_lib.t_command_line_argument_flags.with_value);

  cmdArgs.reg_arg
   (c_prog_arg__summary_file,
    structure_lib.t_command_line_argument_flags.with_value);

  //-----------------------------------
  cmdArgs.parse(Environment.CommandLine);

  //-----------------------------------
  string Arg_log_file
   =cmdArgs.get(c_prog_arg__log_file,true).Value;

  var log=new ProgramLog(Arg_log_file);
 
  try
  {
   log.Send("Hello from test!");

   //-----------------------------------
   var startupData=new StartupData(cmdArgs);

   log.Send("CommandLine: {0}",Environment.CommandLine);
   log.Send("Threads    : {0}",startupData.m_arg__thread_count);
   log.Send("Records    : {0}",startupData.m_arg__rec_num);

   //-----------------------------------
   log.Send("Try to connect to database ...");

   using(var cn=new xdb.OleDbConnection(startupData.m_arg__cn_str))
   {
    cn.Open();

    using(var tr=cn.BeginTransaction())
    {
     var cmd=new xdb.OleDbCommand("delete from TEST_SEQUENTIAL_MOVE",cn,tr);

     cmd.ExecuteNonQuery();
  
     tr.Commit();
    }//using tr

    log.Send("OK!");
   }//using cn

   //---------------------------------- create workers
   log.Send("Create workers ...");

   var workers=new ThreadWorker[startupData.m_arg__thread_count];
  
   {
    var generator=new GeneratorSeq(startupData);

    for(uint i=0;i!=startupData.m_arg__thread_count;++i)
     workers[i]=new ThreadWorker(startupData,i,generator);
   }//local

   //----------------------------------
   log.Send("Create threads ...");

   var threads=new System.Threading.Thread[startupData.m_arg__thread_count];
   
   DateTime startTS;

   try
   {
    for(uint i=0;i!=startupData.m_arg__thread_count;++i)
    {
     var t=new System.Threading.Thread(workers[i].Run);

     t.Start();

     workers[i].m_InitEvent.WaitOne();

     threads[i]=t;
    }//for i

    startTS=DateTime.Now;

    startupData.m_StartEvent.Set();
   }
   finally
   {
    for(uint i=0;i!=startupData.m_arg__thread_count;++i)
    {
     if(!Object.ReferenceEquals(threads[i],null))
     {
      log.Send("Wait thread {0}",i+1);

      threads[i].Join();

      if(!Object.ReferenceEquals(workers[i].m_exc,null))
      {
       ++errCount;

       log.Send("ERROR: {0} - {1}",workers[i].m_exc.Source,workers[i].m_exc.Message);
      }
     }//if
    }//for i
   }//finally

   var endTS=DateTime.Now;

   long duration=(long)(endTS-startTS).Duration().TotalSeconds;

   log.Send("Duration: {0} second(s).",duration);

   //----------------------------------
   {
    ulong n=0;

    for(uint i=0;i!=startupData.m_arg__thread_count;++i)
    {
     n+=workers[i].m_cRecords;

     log.Send("Thread [{0}]: {1:###} record(s)",i,workers[i].m_cRecords);
    }
   
    if(n!=(ulong)startupData.m_arg__rec_num)
    {
     throw new ApplicationException(string.Format("Wrong work. Inserted {0}. Expected {1}",
                                    n,
                                    startupData.m_arg__rec_num));
    }//if
   }//local
    
   //----------------------------------
   using(var sf=new StreamWriter(cmdArgs.get(c_prog_arg__summary_file,true).Value,true))
   {
    sf.WriteLine("{0}\t{1}\t{2}",
                 startupData.m_arg__rec_num,
                 startupData.m_arg__thread_count,
                 duration);

    sf.Close();
   }
  }
  finally
  {
   log.Close();
  }//finally

  return errCount;
 }//Exec
}//class Program

////////////////////////////////////////////////////////////////////////////////
//class ProgramLog

class ProgramLog
{
 public ProgramLog(string logFileName)
 {
  m_log_file=new StreamWriter(logFileName,false);
 }

 public void Send(string s,params object[] args)
 {
  string line=string.Format(s,args);

  line=Helper__BuildTS()+" "+line;

  Console.WriteLine("{0}",line);

  m_log_file.WriteLine("{0}",line);
 }//Send

 public void Close()
 {
  m_log_file.Close();
 }//Close

 private static string Helper__BuildTS()
 {
  var ts=DateTime.Now;

  return ts.ToString("[dd.mm.yyyy hh:mm:ss]");
 }

 private StreamWriter m_log_file;
};//class ProgramLog

////////////////////////////////////////////////////////////////////////////////
//class StartupData

class StartupData
{
 public readonly string m_arg__cn_str;
 public readonly uint   m_arg__thread_count;
 public readonly long   m_arg__rec_num;

 public readonly ManualResetEvent m_StartEvent;

 public StartupData(structure_lib.t_command_line_parser cmdArgs)
 {
  m_arg__cn_str=cmdArgs.get(Program.c_prog_arg__cn_str,true).Value;

  //-----------------------------------
  m_arg__thread_count
   =uint.Parse(cmdArgs.get(Program.c_prog_arg__thread_count,true).Value);

  if(m_arg__thread_count==0)
   throw new ApplicationException("Incorrect number of threads");

  //-----------------------------------
  m_arg__rec_num
   =long.Parse(cmdArgs.get(Program.c_prog_arg__rec_num,true).Value);
 
  if(m_arg__rec_num<=m_arg__thread_count)
   throw new ApplicationException("Incorrect number of records");

  //-----------------------------------
  m_StartEvent=new ManualResetEvent(false);
 }//StartupData

 //------------------------------------
 public bool GenNum(out long v)
 {
  v=Interlocked.Increment(ref m_rec_num);

  if(m_arg__rec_num<v)
   return false;

  return true;
 }//GenNum
   
 //------------------------------------
 private long m_rec_num=0;
};//class StartupData

////////////////////////////////////////////////////////////////////////////////
//interface Generator

interface Generator
{
 bool Gen(out long v);
};//interface Generator

 ////////////////////////////////////////////////////////////////////////////////
//class GeneratorSeq

class GeneratorSeq:Generator
{
 public GeneratorSeq(StartupData startupData)
 {
  m_StartupData=startupData;
 }

 //interface -------------------------------------------------------------
 public bool Gen(out long v)
 {
  return m_StartupData.GenNum(out v);
 }//Gen

 private readonly StartupData m_StartupData;
};//class GeneratorSeq

////////////////////////////////////////////////////////////////////////////////
//class ThreadWorker

class ThreadWorker
{
 public Exception m_exc=null;

 public readonly StartupData m_StartupData;

 public readonly Generator m_Generator;

 public readonly ManualResetEvent m_InitEvent;

 public readonly uint m_ThreadIndex;

 public ulong m_cRecords=0;

 public ThreadWorker(StartupData startupData,
                     uint        index,
                     Generator   generator)
 {
  m_StartupData=startupData;

  m_Generator=generator;

  m_InitEvent=new ManualResetEvent(false);

  m_ThreadIndex=index;
 }//ThreadWorker

 public void Run()
 {
  try
  {
   using(var cn=new xdb.OleDbConnection(m_StartupData.m_arg__cn_str))
   {
    cn.Open();

    using(var tr=cn.BeginTransaction())
    {
     using(var cmd=new xdb.OleDbCommand(null,cn,tr))
     {
      cmd.CommandText=
       "insert into TEST_SEQUENTIAL_MOVE (ID) values(:id)";

      cmd.Prepare();

      m_InitEvent.Set();

      m_StartupData.m_StartEvent.WaitOne(); //infinite!

      long v;
  
      while(m_Generator.Gen(out v))
      {
       cmd[0].Value=v;

       cmd.ExecuteNonQuery();

       ++m_cRecords;
      }//while
     }//using cmd
     tr.Commit();
    }//using tr
   }//using cn
  }
  catch(Exception e)
  {
   m_exc=e;
  }//catch
 }//Run
};//class ThreadWorker

////////////////////////////////////////////////////////////////////////////////
}//namespace Sample_024


+ run1.bat - запуск теста

copy /Y d:\Database\FB_03_0_0\__clear\IBP_TEST_FB30_D3.GDB d:\Database\ram\IBP_TEST_FB30_D3.GDB

bin\vs2017_net46.2_Release\Sample_024.exe /cn_str "provider=LCPI.IBProvider.3;location=localhost:d:\database\ram\ibp_test_fb30_d3.gdb;user id=GAMER;password=vermut;dbclient_type=fb.direct" /thread_count %1 /rec_num %2 /log_file _logs\result_%1_%2.log /summary_file _logs\summary.log

+ run.bat - запуск группы тестов

call run1.bat 1  %1
call run1.bat 2 %1
call run1.bat 4 %1
call run1.bat 8 %1
call run1.bat 10 %1
call run1.bat 20 %1

+ Лог запуска для 10млн записей и 8 потоков


[17.09.2017 04:09:48] Hello from test!
[17.09.2017 04:09:48] CommandLine: bin\vs2017_net46.2_Release\Sample_024.exe /cn_str "provider=LCPI.IBProvider.3;location=localhost:d:\database\ram\ibp_test_fb30_d3.gdb;user id=GAMER;password=vermut;dbclient_type=fb.direct" /thread_count 8 /rec_num 10000000 /log_file _logs\result_8_10000000.log /summary_file _logs\summary.log
[17.09.2017 04:09:48] Threads : 8
[17.09.2017 04:09:48] Records : 10000000
[17.09.2017 04:09:48] Try to connect to database ...
[17.09.2017 04:09:48] OK!
[17.09.2017 04:09:48] Create workers ...
[17.09.2017 04:09:48] Create threads ...
[17.09.2017 04:09:49] Wait thread 1
[17.15.2017 04:15:08] Wait thread 2
[17.15.2017 04:15:08] Wait thread 3
[17.15.2017 04:15:08] Wait thread 4
[17.15.2017 04:15:08] Wait thread 5
[17.15.2017 04:15:08] Wait thread 6
[17.15.2017 04:15:08] Wait thread 7
[17.15.2017 04:15:08] Wait thread 8
[17.15.2017 04:15:08] Duration: 319 second(s).
[17.15.2017 04:15:08] Thread [0]: 1113156 record(s)
[17.15.2017 04:15:08] Thread [1]: 1147915 record(s)
[17.15.2017 04:15:08] Thread [2]: 1183818 record(s)
[17.15.2017 04:15:08] Thread [3]: 1222949 record(s)
[17.15.2017 04:15:08] Thread [4]: 1263065 record(s)
[17.15.2017 04:15:08] Thread [5]: 1305448 record(s)
[17.15.2017 04:15:08] Thread [6]: 1353977 record(s)
[17.15.2017 04:15:08] Thread [7]: 1409672 record(s)

Возможно что-то здесь не так.

Но у меня нагрузочное тестирование в 4 потока идет ~16 часов. А в 8 потоков - ~10 часов. Тесты разные, но большая часть параллельно работает с одними и теми же таблицами.

В 4 потока можно запускать сразу два экземпляра тестов (для разных баз данных) - те же 16 часов. Плюс минус.

Естественно - нагрузочные тесты тоже на RAM-диске.

Так что цифры вышеприведенного теста вроде адекватные.
17 мар 17, 16:36    [20306743]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Romanzek
Member

Откуда: Red Soft
Сообщений: 85
Коваленко Дмитрий,

Интересные результаты, спасибо
Будем теперь с нетерпением ждать релиза нашей тройки :)
17 мар 17, 17:04    [20306885]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31036

Hello, Romanzek!
You wrote on 17 марта 2017 г. 17:07:05:

Romanzek
> Будем теперь с нетерпением ждать релиза нашей тройки :)
обо что речь?
какой тройки?

Posted via ActualForum NNTP Server 1.5

17 мар 17, 17:07    [20306901]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
Коваленко Дмитрий,

спасибо, это было интересно.

БД на RAM диске, конечно, не может не отличаться от БД на HDD.

PS С 2.5 сравнить не хочешь в тех же условиях ? :)
17 мар 17, 17:12    [20306917]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10378
Мимопроходящий,

как какой, он же из Red Soft
17 мар 17, 17:25    [20306970]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 31036

Hello, Симонов Денис!
You wrote on 17 марта 2017 г. 17:30:05:

Симонов Денис
он же из Red Soft
на нём не написано

Posted via ActualForum NNTP Server 1.5

17 мар 17, 17:30    [20306999]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60869
Коваленко Дмитрий> У меня c FB3 SS получилась немного другая картина.

Спасибо, очень интересно. А можешь сравнить SS c CS (ну и SC до кучи) ?

hvlad> PS С 2.5 сравнить не хочешь в тех же условиях ? :)

Присоединяюсь.

Posted via ActualForum NNTP Server 1.5

17 мар 17, 18:09    [20307165]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Коваленко Дмитрий,

imho фигня полная. я даже не знаю, что комментировать.
17 мар 17, 19:20    [20307405]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Коваленко Дмитрий,

все-таки комментарий появился. а с какого боку тут мульти-тредовое приложение? Тест про вставку из параллельных коннектов.
Кроме того, один коннект в ФБ что 2.5 что 3.0 не распараллеливается. А я у тебя что-то там вставки в N коннектах совсем не вижу. Может я код C# не понимаю, но тем не менее.
Отсюда вывод, что результаты тем более ахинейные, и ты просто меряешь распараллеливаемость своего OLE DB провайдера.
17 мар 17, 19:40    [20307452]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Romanzek
Member

Откуда: Red Soft
Сообщений: 85
kdv,

на каждый воркер отдельное подключение. Вроде все корректно.
17 мар 17, 19:46    [20307472]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Romanzek,

ткните меня носом в код. В любом случае, я уже такое количество тестов проводил, что нутром чую, что тест должен быть максимально чистым. В нашем случае мы стартовали isql с входным скриптом insert. Что может быть чище? Никакого оверхеда на компоненты, worker threads, и так далее.

Кроме того, результаты. в 20 потоках 1млн записей вставляется в 4 раза быстрее, чем в 1. Это при том, что все эти потоки лупят в одну таблицу. Где тут распараллеливаемость может "вдруг случиться", скажите мне?
Каким образом 32 isql втыкают записи на супере, на 12-ядерном проце так же, как в 1 коннекте, и каким образом 20 тредов из одного приложения втыкают этот же миллион записей в 4 раза быстрее чем 1 коннект? Откуда может быть такая разница?
Ну давайте, объясните мне.
17 мар 17, 19:54    [20307496]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Коваленко Дмитрий
Member

Откуда: Липецк
Сообщений: 559
hvlad
Коваленко Дмитрий,

спасибо, это было интересно.

БД на RAM диске, конечно, не может не отличаться от БД на HDD.

Да, я тоже эту фишку просёк :)

hvlad
PS С 2.5 сравнить не хочешь в тех же условиях ? :)

Да можно. Суперклассик? Я на ночь оставлю.

Гаджимурадов Рустам
А можешь сравнить SS c CS (ну и SC до кучи) ?

Рустам, по секрету - сиди на суперсервере тройки :)

---
Пока я глазел на студенток шатался, тут посчитались цифры для 40млн записей.

1 4981
2 2744
4 1807
8 1458
10 1413
20 1316

База с 18MB (пустая) опухла до 2.4GB - то есть она еще даже за пределы страничного кэша не вылезла (3.1гига).
17 мар 17, 21:00    [20307666]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8493
kdv
Ну давайте, объясните мне.
Дисковая малёху пошустрей?

тест с isql готов прогнать на своем десктопе, если что.
конфиг i3 проц, ссд на 240 гиг, 16 гиг ОЗУ, Suse42.2 FB 3.0.2
17 мар 17, 21:01    [20307670]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
Коваленко Дмитрий
hvlad
PS С 2.5 сравнить не хочешь в тех же условиях ? :)

Да можно. Суперклассик? Я на ночь оставлю.
SS тоже интересно.
17 мар 17, 21:06    [20307689]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
kdv
В нашем случае мы стартовали isql с входным скриптом insert. Что может быть чище? Никакого оверхеда на компоненты, worker threads, и так далее.
А у Коваленко препарированные инсерты. Ы ? :)
Или ты set bulk_insert умеешь готовить ? :)
17 мар 17, 21:15    [20307724]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
А ещё у него таблица всего с одним полем (индекс есть) и с неизвестным триггером (вдруг он ускоряет инсерты ? ).
17 мар 17, 21:19    [20307742]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
hvlad
А у Коваленко препарированные инсерты. Ы ? :)
Или ты set bulk_insert умеешь готовить ? :)

ну и нахрена это надо? я не очень понимаю смысл такого теста. Ну фиг с ним, пусть препарированные. Но пусть запускает N процессов тогда. Не надо вот этой псевдо-многопоточности в C#.

hvlad
А ещё у него таблица всего с одним полем (индекс есть)

у нас в тесте было
create table fix (
    id bigint not null
    ,rate_time timestamp not null
    ,dbwrite_time timestamp not null
    ,quote_ref int not null
    ,rate_bid double precision not null
    ,rate_ask double precision not null
    ,src_bid_ref int not null
    ,src_ask_ref int not null
    ,sl_session_uid bigint
    ,constraint pk_fix primary key (id) using index pk_fix
);


Что с одним, что с двумя столбцами - это напороться на артефакт с 50% заполнением страниц. Я про это уже несколько раз писал. Правда, на ФБ 3 не проверял.
17 мар 17, 21:47    [20307811]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
господа. Для повтора теста требуется некий консенсус по поводу условий этого теста.
Если я еще понимаю
1. проверку вставки без индексов совсем
хотя это нереальный случай, то
2. проверка вставки с несколькими индексами
относится несколько к другому тесту - а именно - замедлению вставки при увеличении количества индексов.
Понятно, что к тесту как таковой параллельной вставки это имеет мало отношения. У нас уже были семинары (за рубежом и в Москве) где Алексей Ковязин показывал разницу между вставкой с индексом bigint и индексом varchar(36).
То есть, понятно, что вставка с увеличением количества индексов замедлится, и ее можно было бы проверить в монопольном режиме, достаточно быстро, а дальше уже экстраполировать на результаты "минимальной" вставки в отношении "многопользовательского режима".

Но - вы чего хотите-то? Например, у нас в кулуарах зашел вопрос об использовании gen_id. Например, если его вообще исключить, то получится сугубо синтетический тест. С другой стороны, вызов gen_id на каждый insert "монополизирует" вставку. Но в реальной системе-то идентификаторы как-то генерятся! gen_id напрямую, или триггерами, или еще бог знает как.
Проводить тест "налысо", т.е. без минимальной привязки к практическому программированию, я не вижу смысла.

Соответственно, возникает вопрос. Либо повторить тест в том виде, в каком он был сделан, именно на 3.0.2, либо повторить тест с множеством отклонений. Понятно, что меня тоже интересует разница "вообще, при разных условиях". Но поскольку сам по себе тест займет не меньше недели (к слову, я [url=]тестил рестор 3гб базы[/url] в течение 3х суток, это чтобы было понятно, сколько времени занимают подобные тесты), то надо все же определиться, что тестировать, а что - нет. Иначе мы рискуем потратить пару недель на фиг знает что.
Итак, вопрос - что вы хотите протестировать на самом деле?
17 мар 17, 23:53    [20308104]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
kdv,

экая хня. урл на ютуб в теге http движок развернул в embedded видео. тут я не виноват.
17 мар 17, 23:55    [20308105]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60869
Ты хочешь набор мнений услышать или чего?
Для этого надо четкую цель теста озвучить.

Лично я за тест на одной плоской таблице,
с 5-7 полями (2 строковых, остальные int),
в разрезе 1-8 коннектов по всем архитектурам,
а) без индексов совсем б) с PK+ 1-2 индекса.

10-40 лямов записей не нужно - достаточно,
чтобы минимальная длительность превышала
30 секунд и была стабильна. Ну и 2.5 vs 3.0.

kdv> gen_id. Например, если его вообще исключить,
kdv> то получится сугубо синтетический тест
kdv> Проводить тест "налысо", т.е. без минимальной привязки
kdv> к практическому программированию, я не вижу смысла.

Так он и сейчас синтетический. Теоретически, его
можно и позже "присвоить" update where pk is null.
А насчет реальной системы - в реально системе это
всё вряд ли будет монопольно, не говоря уже о том,
что у таблицы есть зависимости.

Неделей раньше или позже - значения не имеет.

Posted via ActualForum NNTP Server 1.5

18 мар 17, 00:17    [20308136]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Гаджимурадов Рустам
10-40 лямов записей не нужно - достаточно,
чтобы минимальная длительность превышала
30 секунд и была стабильна. Ну и 2.5 vs 3.0

как видим, тут и 1 млн записей достаточно.
Гаджимурадов Рустам
Так он и сейчас синтетический.

тут ты совсем неправ. Исходный тест был разработан по мотивам (и со структурой таблицы) конкретной компании. Для проверки, что там у них "распараллеливается". Выяснилось, что все это фикция.
Гаджимурадов Рустам
А насчет реальной системы - в реально системе это всё вряд ли будет монопольно, не говоря уже о том, что у таблицы есть зависимости.

гм, что??? в куче систем есть задача по массовой заливке данных. Понятно что в 90% этих систем может быть задача по массовому обновлению данных, но это уже несколько другая тема :-)

в частности, мы периодически выкладывали логи нашего теста oltp-emul
https://ib-aid.com/en/logs-3-0/
Это куда более "синтетично" чем просто вставка или update. Это эмуляция вполне реальной системы.
18 мар 17, 00:26    [20308147]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60869
kdv> Исходный тест был разработан по мотивам
kdv> (и со структурой таблицы) конкретной компании

Она у них без зависимостей что ли?!

> гм, что??? в куче систем есть задача по массовой заливке данных.

И? Они заливку ночером на одной таблице запускают?
Это разве что с репликацией какой-то сравнить, да и-то
сильно вырожденный случай.

Posted via ActualForum NNTP Server 1.5

18 мар 17, 00:35    [20308152]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
чччД
Guest
Кстати, да.
Интересно бы знать цель теста. И этого и нового.

Вот, например, вчера по рассылке ссылка на видео пришла.
+ Видео


И так совершенно понятно, что чем больше размер страницы - тем в целом быстрее, и что протокол tcp медленнее локального и тем более - чем se, и т.д. и т.п.

Да, любопытно было узнать, что FB 2.1 в некоторых случаях ресторится быстрее, чем прочие.
Но какая польза разработчику от этой информации? Неужели скорость рестора (даже не на "серверной" машине) будет определяющей при выборе версии сервера для очередного проекта?

Наверняка, цель какая-то была. Но вот какая - непонятно.
18 мар 17, 00:52    [20308166]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60869
Цель всех тестов - сравнить. Вопросы звучат
как "что сравнивать?" и "чтобы что узнать?".

Posted via ActualForum NNTP Server 1.5

18 мар 17, 00:58    [20308171]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49375

kdv
2. проверка вставки с несколькими индексами
относится несколько к другому тесту - а именно - замедлению вставки при увеличении
количества индексов.

Лично у меня есть подозрение, что это замедление вставки - тоже миф и большее количество
индексов увеличит распараллеливание.

Posted via ActualForum NNTP Server 1.5

18 мар 17, 01:07    [20308176]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
чччД
Guest
Гаджимурадов Рустам,

в том и вопрос: "чтобы что узнать".

Вот (например), лично для тебя, как для разработчика - какая польза от информации, что на десктопном компе с 4Гб ОЗУ фаерберд 2.1 ресторит базу быстрее, чем FB 2.5?
+
Это чем-то напоминает сие сообщение "британских ученых".

Общий вес жертв пауков составляет 400-800 миллионов тонн в год.
18 мар 17, 01:07    [20308177]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Гаджимурадов Рустам
Она у них без зависимостей что ли?!

каких зависимостей?
что значат "зависимости" в твоем понимании? FK? Триггеры?
Гаджимурадов Рустам
И? Они заливку ночером на одной таблице запускают?

нет, постоянно заливка работает. биржевые котировки, микротранзакции.
Гаджимурадов Рустам
Это разве что с репликацией какой-то сравнить, да и-то сильно вырожденный случай.

да х. с ним. Есть же у людей задачи вставки нового товара, обновления прайсов, и прочего.
чччД
Интересно бы знать цель теста. И этого и нового.

есть такая мулька - "параллельно вставлять". Этот тест показал, что эта "мулька" бессмыслена.
чччД
Но какая польза разработчику от этой информации?

разработчику пользы нет, а администратору - есть. По крайней мере он может
- оценить 2.0 vs 2.1 2.5 если сидит на 2.0
- оценить restore с теми или иными опциями (-se или прочее)
чччД
Наверняка, цель какая-то была. Но вот какая - непонятно.

лично у меня была цель сравнить IB и FB. Ну и остальное.
Dimitry Sibiryakov
что это замедление вставки - тоже миф и большее количество индексов увеличит распараллеливание.

ну пендец...
18 мар 17, 01:20    [20308185]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
чччД
Guest
kdv
...
чччД
Но какая польза разработчику от этой информации?

разработчику пользы нет, а администратору - есть. По крайней мере он может
- оценить 2.0 vs 2.1 2.5 если сидит на 2.0
...


И?
Администратор, посмотрев твои видео, потребует от разработчика мигрировать программный комплекс на новую версию???

С каких пор администратор принимает решение о выборе СУБД?
18 мар 17, 01:25    [20308187]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
чччД
Администратор, посмотрев твои видео, потребует от разработчика мигрировать программный комплекс на новую версию???

госпидя. как будто видео (или статья) прямо толкает админа на какие-то действия. Все эти тесты расчитаны на тех, кто знает, что существуют разные версии ФБ, ИБ, и так далее. И на тех, кто может делать выбор. На КОНЕЧНЫХ ПОЛЬЗОВАТЕЛЕЙ ВСЯ ЭТА ХЕРНЯ НЕ РАСЧИТАНА!
18 мар 17, 01:49    [20308196]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
ёп, я просто поражаюсь. конечные пользователи читают тесты о сравнении версий ИБ и ФБ? Они смотрят видео про сравнение параллельной вставки на разных архитектурах?
Ядрена мать, я был такого низкого мнения о конечных пользователях софта на ФБ! Они, оказывается, вовсю меняют конфиг ФБ, железо, и даже код их приложений (про управление транзакциями и оптимальный SQL)! ОНИ ЧИТАЮТ IBASE.RU!
18 мар 17, 01:53    [20308197]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
чччД
Guest
kdv
чччД
Администратор, посмотрев твои видео, потребует от разработчика мигрировать программный комплекс на новую версию???

госпидя. как будто видео (или статья) прямо толкает админа на какие-то действия. Все эти тесты расчитаны на тех, кто знает, что существуют разные версии ФБ, ИБ, и так далее. И на тех, кто может делать выбор. На КОНЕЧНЫХ ПОЛЬЗОВАТЕЛЕЙ ВСЯ ЭТА ХЕРНЯ НЕ РАСЧИТАНА!


И так, ни "конечным пользователям", ни разработчикам этот тест не нужен. Нужен админам:
kdv
По крайней мере он может
- оценить 2.0 vs 2.1 2.5 если сидит на 2.0

Но на мнение админов разработчикам обычно перепендикулярно.


С другой стороны - ну не зря же ты эти тесты делал. Десятки часов. Наверное, кому-то нужно. Кому?

PS: извините, если что.
18 мар 17, 01:58    [20308199]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
чччД
Guest
kdv,

сайт ibase.ru наполнен полезнейшей информацией. Я всех туда отправляю и сам периодически читаю-перечитываю.

Вопрос - о конкретном тесте. Ну, оценили время рестора.
И что? Кто конкретно должен учесть результаты тестирования в своей работе?
18 мар 17, 02:04    [20308203]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
чччД
Наверное, кому-то нужно. Кому?

ну, немцы любят такие штуки - всякие сравнения и т.п.
разработчикам тоже надо понять, что быстрее и как.

и, если бы вот это мое видео было неинтересно, не было бы топика на три страницы. Люди хотят понять, имеет смысл параллельная вставка или нет, и в каких случаях.
18 мар 17, 02:05    [20308205]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
kdv
разработчикам

я имею в виду в первую очередь разработчиков систем на ФБ. Впрочем, разработчикам Firebird такие тесты тоже полезны. Обычно, если есть непонятные результаты тестов, мы их не публикуем, а спрашиваем разработчиков ФБ, "почему так".
18 мар 17, 02:08    [20308208]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
чччД
Guest
kdv,

твое видео интересно безотносительно цели тестирования.

Но ведь нельзя все время выезжать на талантливой игре актеров, нужно какой-то сюжет в сценарий включить, чтобы интрига была. :)
Вон, например, как когда ты терабайтную базу гонял.
18 мар 17, 02:12    [20308209]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
чччД
Guest
kdv
...разработчикам Firebird такие тесты тоже полезны. Обычно, если есть непонятные результаты тестов, мы их не публикуем, а спрашиваем разработчиков ФБ, "почему так".


ОК, этот ответ полностью удовлетворил.
Спасибо, и еще раз извиняюсь за нудёж.
18 мар 17, 02:14    [20308210]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Коваленко Дмитрий
Member

Откуда: Липецк
Сообщений: 559
hvlad
SS тоже интересно.

Чтобы два раза не вставать, протестировал все.

Картинка с другого сайта.

Логи, базы, XLSX, исходный код теста
18 мар 17, 12:32    [20308566]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60869
Коваленко Дмитрий> Чтобы два раза не вставать, протестировал все.

О, большое спасибо. Хай живе 2.5 CS!

Posted via ActualForum NNTP Server 1.5

18 мар 17, 14:18    [20308742]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60869
kdv> каких зависимостей?
> что значат "зависимости" в твоем понимании? FK? Триггеры?

Да, другие таблицы с FK, триггеры с чеками и ХПами.

> нет, постоянно заливка работает

Она монопольно работает что ли?

> лично у меня была цель сравнить IB и FB. Ну и остальное.

ИМХО, на IB всем начхать. Ну может кроме ДЕ и Ко
ради потешить самолюбие, и-то сильно сомневаюсь.

Posted via ActualForum NNTP Server 1.5

18 мар 17, 14:20    [20308746]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10378
Гаджимурадов Рустам
ИМХО, на IB всем начхать.


ну почему же, интересно знать как там конкуренты ФБ поживают.

Коваленко Дмитрий,

результаты Firebird 3 могли бы быть чуть лучше (где-то 1-3%), если бы было выключено шифрование подключения.
18 мар 17, 14:38    [20308795]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
Симонов Денис
результаты Firebird 3 могли бы быть чуть лучше (где-то 1-3%), если бы было выключено шифрование подключения.
Ну вот что ты сравнивашь ?
1-20 шт. затрат на коннект с шифрованием - и вставка 1-10 млн записей с клиента (т.е. соотв. кол-во вызовов АПИ).
Ещё раз подумай...
18 мар 17, 14:44    [20308811]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60869
Симонов Денис> результаты Firebird 3 могли бы быть чуть лучше (где-то 1-3%)

Я не знаю, насколько справедливо твоё замечание,
особенно с учетом слов Влада, но даже если так, то
1-3% - это в любом случае в пределах погрешности,
мало заслуживающей внимания.

Скорее уж тут надо сравнивать на более широких
таблицах + (без индексов | c 2-3 индексами).

Posted via ActualForum NNTP Server 1.5

18 мар 17, 15:26    [20308904]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Коваленко Дмитрий,

я уже говорил, что результаты твоего теста - фигня какая-то. Проверил 1млн вставку СКРИПТОМ, в isql, Firebird 3.0 SS, 1 столбец bigint+пк, 16к страница.
Диск sata.
FW=ON - 70 секунд, FW=OFF - 65 секунд.
А у тебя на RAM-диске - 128 секунд.
Ну да, триггера before insert у меня нет. Тем не менее.
18 мар 17, 16:51    [20309023]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60869
Почему фигня-то? Просто тест снижает влияние IO из-за HDD vs RAM.

Posted via ActualForum NNTP Server 1.5

18 мар 17, 17:11    [20309062]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49375

kdv
Проверил 1млн вставку СКРИПТОМ, в isql

То есть к собственно вставке ты примешал ещё борьбу за кэш метаданных, ACL и парсер.
Теперь осталось угадать какая из этих частей плохо распараллеливается.

Posted via ActualForum NNTP Server 1.5

18 мар 17, 18:06    [20309204]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 6891
kdv
вставку СКРИПТОМ

вот это вообще не вижу смысла бенчмаркать, кого волнует производительность вставки так делать никогда не будут
18 мар 17, 20:10    [20309489]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60869
Не будут - не так важно. Куда важнее сравнить
isql-скрипт c обычным вариантом через preapre.

Posted via ActualForum NNTP Server 1.5

18 мар 17, 22:01    [20309732]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Dimitry Sibiryakov
То есть к собственно вставке ты примешал ещё борьбу за кэш метаданных, ACL и парсер.

ну что за....

я просто сделал скрипт с 1млн инсертов, и запустил его в isql. ОДИН раз, один isql, просто для сравнения с результатами Коваленко.
И сравнил полученные 65 секунд с его 128 секунд на RAM диске.
Какая еще борьба за кэш, и прочее?
dimitr
вот это вообще не вижу смысла бенчмаркать, кого волнует производительность вставки так делать никогда не будут

да ё-мое. У Коваленко в одном коннекте 128 секунд, препарированные вставки, на РАМ диске. У меня - 65 секунд на одном коннекте, текстовые инсерты, на SATA.
Гаджимурадов Рустам
isql-скрипт c обычным вариантом через preapre.

именно! Почему у меня скриптом в 2 раза быстрее чем prepare?

p.s. до кучи - размер кэша ФБ на рестор не влияет, соответственно на тест инсертов он тоже влиять не будет. Поэтому никакого смысла задирать кэш суперсерверу в этом тесте не было.
18 мар 17, 23:24    [20309847]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60869
kdv> я просто сделал скрипт с 1млн инсертов

Даже EB/SP было бы лучше, наверное.

> Почему у меня скриптом в 2 раза быстрее чем prepare?

Ежа с ужом. У вас компы разные, всё разное.
Размер кеша на простые инсерты и не должен
влиять, за какими-то необычными случаями.

Posted via ActualForum NNTP Server 1.5

19 мар 17, 00:58    [20309946]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Гаджимурадов Рустам
Ежа с ужом. У вас компы разные, всё разное.


то есть, Intel I7-6950X хуже AMD FX8350 ?
http://cpuboss.com/cpus/Intel-6950X-vs-AMD-FX-8350

база в RAM хуже SATA? Когда разница в 2 раза ! в голове должно возникнуть подозрение, что "что-то тут не так". Я считаю, что если C# в 2 раза медленнее скрипта, значит проблема в C#.
Придется написать тест с prepare, с gen_id в скрипте, и gen_id в триггере. И сравнить между собой уже эти вещи, как минимум однопоточно.

p.s. битва! :-)
19 мар 17, 03:12    [20310065]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
kdv,

для начала добавь триггер :)
19 мар 17, 03:20    [20310075]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
kdv
то есть, Intel I7-6950X хуже AMD FX8350 ?
http://cpuboss.com/cpus/Intel-6950X-vs-AMD-FX-8350

cpuboss
Reasons to consider the
AMD FX 8350
Significantly higher clock speed 4 GHz vs 3 GHz Around 35% higher clock speed
Higher turbo clock speed 4.2 GHz vs 3.5 GHz More than 20% higher turbo clock speed
19 мар 17, 03:23    [20310078]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
hvlad
для начала добавь триггер :)

я бы добавил, но ты меня этим советом ввел в ступор. В таблице Коваленко ведь 1 столбец. А что тогда в insert писать, если есть триггер?
insert into test values (ШТО?!?!)
:-)
hvlad
Reasons to consider the

там же написано, что в одноядерном режиме они почти эквивалентны. А вот 128 секунд и 65 секунд - не эквивалентны.
19 мар 17, 06:05    [20310104]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
kdv
я бы добавил, но ты меня этим советом ввел в ступор
Выйди из ступора и добавь пустой триггер :)

kdv
там же написано, что в одноядерном режиме они почти эквивалентны.
Заборы - они такие, там тоже пишут.
А вот мегагерцы - их никто не отменял.

kdv
А вот 128 секунд и 65 секунд - не эквивалентны.
Ну так у вас и условия теста мало в чём совпадают
19 мар 17, 11:06    [20310234]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Коваленко Дмитрий
Member

Откуда: Липецк
Сообщений: 559
hvlad
для начала добавь триггер :)

Да нет.

Для начала надо заставить восемь экземпляров isql отрабатывать в 4 раза быстрее.

Но поскольку это не получается, мы будем ставить под сомнение результаты альтернативного теста.

Удобно же.

----
0. Тест был написан максимально корректно - в нем даже не учитывается время на инициализацию подключения/транзакции/запроса. Можно было бы исключить время на коммиты и завершение работы потоков, но мне это пришло в голову только сейчас.

И конечно же, каждый поток работает со своим подключением.

На 10 потоках и fb3_ss/cs/sc процессор (с HT) показывает загрузку на половину. То есть, можно считать, что все ядра загружены работой.

1. До RAM-диска там дело не доходит - потому что страничный кэш (3GB) больше чем база данных (600MB).

Собственно, можно и на RAID из HDD выполнить (у меня он, такой RAID, тоже есть) - но смысла в этом уже нет. Потому что ответ на вопрос "про параллельную вставку в одну таблицу" уже получен.

В начале я думал, что в тесте с isql затык связан с дисками. И индексом. Поэтому и применил эту "тяжелую артиллерию".

Результат согласуется с моим другим наблюдением - нагрузочное тестирование IBProvider-а в восемь потоков (10 часов) быстрее в полтора раза чем в четыре потока (15-16 часов). Кстати, как раз на восьми потоках RAM-диск и демонстрирует себя во всей красе.

2. Почему-то не возникает вопрос - почему на одном подключении fb25_ss работает на 25% быстрее чем fb3_ss.

Но вот почему "однопоточная" загрузка через isql работает быстрее чем через два (ДВА, Карл) провайдера (каждый из которых на порядки сложнее чем этот isql) - это мы не понимаем. Или делаем вид, что как не понимаем.

Ну хорошо, я объясню.

Как только isql начнет работать поставщиком данных, реализующим спецификации OLE DB + ADO.NET + сопутствующие требования к таким вещам, цифры выравняются.

3. Можно взять родной ADO.NET провайдер для FB и натянуть мой тест на него (там работы на 10 минут). Этот провайдер без претензий, поэтому работает ощутимо быстрее.

Впрочем, взять что угодно (FIB/IBO/IBX/ISC API) и проверить на них.

И меня смешит, что за четыре дня никто, из здесь отметившихся, этого не сделал.
19 мар 17, 11:53    [20310282]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
Коваленко Дмитрий
Для начала надо заставить восемь экземпляров isql отрабатывать в 4 раза быстрее.
Ты (и kdv) не правильно интерпретируете полученные результаты :)
На примере твоих данных: я, например, вижу, что движок в состоянии залить 1млн записей (в твою таблицу с индексом и триггером) за 31 сек.
Твой код имеет значительный оверхед, который хороо виден на одном потоке и который удаётся преодолеть где-то 4-8 потокам.
Что радует - при увеличении кол-ва потоков нет деградации производительности (хотя причины для неё вполне есть). Не знаю, как оно было бы для 32-64-128 потоков.
У isql оверхед другой, там и картина чуть другая. Вот и весь "секрет".
Коваленко Дмитрий
На 10 потоках и fb3_ss/cs/sc процессор (с HT) показывает загрузку на половину. То есть, можно считать, что все ядра загружены работой.
А какая загрузка у процесса FB и какая - у твоего теста ?
Коваленко Дмитрий
нагрузочное тестирование IBProvider-а в восемь потоков (10 часов) быстрее в полтора раза чем в четыре потока (15-16 часов)
А там что, тоже долбится одна и таже таблица ?
Коваленко Дмитрий
Почему-то не возникает вопрос - почему на одном подключении fb25_ss работает на 25% быстрее чем fb3_ss.
Потому что на него 100500 раз отвечали уже
19 мар 17, 12:55    [20310426]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
Коваленко Дмитрий
И меня смешит, что за четыре дня никто, из здесь отметившихся, этого не сделал.
Здесь Дельфи не знают (c) (tm), а ты про какой-то ужасный Ц-шарп :)
19 мар 17, 12:56    [20310428]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
Коваленко Дмитрий
До RAM-диска там дело не доходит - потому что страничный кэш (3GB) больше чем база данных (600MB).
Тут ты тоже не прав, кстати. Т.к. ты не менял FileSystemCacheTreshold, то ты выключил кеширование на уровне FS и любой IO превратился в синхронный непосредственный обмен с RAM диском.
19 мар 17, 13:03    [20310440]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Коваленко Дмитрий
. До RAM-диска там дело не доходит - потому что страничный кэш (3GB) больше чем база данных (600MB).

если ты так веришь, что кэш фб работает на массовые вставки - зачем тогда суперу выставил здоровенный кэш? В конце-концов мог бы еще один раз запустить тест супера с дефолтным кэшем.
19 мар 17, 15:04    [20310713]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Коваленко Дмитрий
Member

Откуда: Липецк
Сообщений: 559
kdv
Коваленко Дмитрий
. До RAM-диска там дело не доходит - потому что страничный кэш (3GB) больше чем база данных (600MB).

если ты так веришь, что кэш фб работает на массовые вставки - зачем тогда суперу выставил здоровенный кэш?

Это размер кэша, в который целиком помещается база после нагрузочного тестирования на FB3_SS.

Я не стал его менять для этого теста с инсертами на суперсервере.

Какой смысл мне жадничать?

kdv
В конце-концов мог бы еще один раз запустить тест супера с дефолтным кэшем.

Меня не просили, я не запускал.

А сам я в последнее время недогадливый стал.
19 мар 17, 17:22    [20310986]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Коваленко Дмитрий
Member

Откуда: Липецк
Сообщений: 559
hvlad
Коваленко Дмитрий
На 10 потоках и fb3_ss/cs/sc процессор (с HT) показывает загрузку на половину. То есть, можно считать, что все ядра загружены работой.
А какая загрузка у процесса FB и какая - у твоего теста ?

Прямо сейчас померил (2 раза) 1млн в один поток. Лучший вариант:
- Тест работал 138 секунд.
- Тестовый процесс 58 секунд (User Time: 34 секунды).

hvlad
Коваленко Дмитрий
нагрузочное тестирование IBProvider-а в восемь потоков (10 часов) быстрее в полтора раза чем в четыре потока (15-16 часов)
А там что, тоже долбится одна и таже таблица ?

Таблиц в базе много. Но в какой то момент времени, как правило, тесты мучают одну или две.

Например таблица TBL_CS__WIN1251 - на ней проверяются разные комбинации кодовой страницы подключения/кодовой страницы клиента/разные способы вставки и чтения/разные типы (CHAR/VARCHAR/BLOB/массивы). Для каждого символа кодовой страницы 1251.

Если прогонять эти проверки последовательно - уже никакой жизни не хватит.

Или ты мне хочешь сказать, что я неправильно работаю с Firebird?

Ну, неправильно, да.

Правильно было раньше.
19 мар 17, 18:08    [20311093]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Коваленко Дмитрий
Member

Откуда: Липецк
Сообщений: 559
hvlad
Коваленко Дмитрий
До RAM-диска там дело не доходит - потому что страничный кэш (3GB) больше чем база данных (600MB).
Тут ты тоже не прав, кстати. Т.к. ты не менял FileSystemCacheTreshold, то ты выключил кеширование на уровне FS и любой IO превратился в синхронный непосредственный обмен с RAM диском.

FileSystemCacheTreshold, наверное, появился после того как я перестал интересоваться вопросом "как еще можно ускорить сервер собственными средствами?". После 2010?

Спасибо, попробую.
19 мар 17, 18:16    [20311108]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Коваленко Дмитрий,

твои тесты твоего же драйвера тут мало кого интересуют. Любые посторонние штуки делают тест "не чистым". Что за проблема создать пустую базу и туда уже положить таблицу для теста insert? Кого, нафиг, интересует тест вставки в таблицу из ОДНОГО столбца? Ну ей-богу...
Коваленко Дмитрий
Спасибо, попробую.

чего там пробовать-то. смотришь RAMMAP, есть твоя база в файловом кэше, или нет. Если нет, значит ты кэш ФБ в конфиге задул больше FileSystemCacheTreshold, и все. А там по умолчанию 64к страниц.
19 мар 17, 18:54    [20311200]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Коваленко Дмитрий
Member

Откуда: Липецк
Сообщений: 559
kdv
Коваленко Дмитрий,

твои тесты твоего же драйвера тут мало кого интересуют.

Они и мне не очень интересны. До тех пор пока не найдут какую нибудь херню. Как правило - на стороне сервера.
19 мар 17, 19:42    [20311325]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10378
запилил свой вариант на OO API 4.0 с использование Batch API (по 100 записей)
id это просто номер записи в цикле, threadId номер потока. Заливалось 1 млн записей.
Процессор Inter Core i3-8100 3.6 GHz (4 физических ядра).
На каждый поток своё подключение по TCP на localhost.

1. Без индексов

recreate table t(id bigint, threadId int)


c:\Users\Denis\source\repos\threadtest\x64\Release>threadtest 1
Recreate table
Insert 1000000 with 1 threads
Insert time: 3848 ms
Count record after test: 1000000

c:\Users\Denis\source\repos\threadtest\x64\Release>threadtest 2
Recreate table
Insert 1000000 with 2 threads
Insert time: 3129 ms
Count record after test: 1000000

c:\Users\Denis\source\repos\threadtest\x64\Release>threadtest 4
Recreate table
Insert 1000000 with 4 threads
Insert time: 2632 ms
Count record after test: 1000000

c:\Users\Denis\source\repos\threadtest\x64\Release>threadtest 8
Recreate table
Insert 1000000 with 8 threads
Insert time: 2409 ms
Count record after test: 1000000

c:\Users\Denis\source\repos\threadtest\x64\Release>threadtest 16
Recreate table
Insert 1000000 with 16 threads
Insert time: 2400 ms
Count record after test: 1000000

c:\Users\Denis\source\repos\threadtest\x64\Release>threadtest 32
Recreate table
Insert 1000000 with 32 threads
Insert time: 2728 ms
Count record after test: 1000000

как видно распараллеливание вставки в таблицу без индексов не очень хорошее.

А вот если есть индексы картина кардинально меняется

recreate table t(id bigint, threadId int, constraint pk_t primary key(id))


c:\Users\Denis\source\repos\threadtest\x64\Release>threadtest 1
Recreate table
Insert 1000000 with 1 threads
Insert time: 22024 ms
Count record after test: 1000000

c:\Users\Denis\source\repos\threadtest\x64\Release>threadtest 2
Recreate table
Insert 1000000 with 2 threads
Insert time: 11534 ms
Count record after test: 1000000

c:\Users\Denis\source\repos\threadtest\x64\Release>threadtest 4
Recreate table
Insert 1000000 with 4 threads
Insert time: 5246 ms
Count record after test: 1000000

c:\Users\Denis\source\repos\threadtest\x64\Release>threadtest 8
Recreate table
Insert 1000000 with 8 threads
Insert time: 4833 ms
Count record after test: 1000000

c:\Users\Denis\source\repos\threadtest\x64\Release>threadtest 16
Recreate table
Insert 1000000 with 16 threads
Insert time: 4783 ms
Count record after test: 1000000

c:\Users\Denis\source\repos\threadtest\x64\Release>threadtest 32
Recreate table
Insert 1000000 with 32 threads
Insert time: 4737 ms
Count record after test: 1000000

Первоначально пробовал без использование batch API. Так вот там вставка в таблицу без индексов параллелилась прям на ура. Но потом я подумал и понял, что ускорение происходит за счёт преодоления оверхеда сетевого взаимодействия пусть даже по localhost.
13 фев 20, 22:59    [22079646]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
hvlad
Member

Откуда:
Сообщений: 10765
Симонов Денис
Первоначально пробовал без использование batch API. Так вот там вставка в таблицу без индексов параллелилась прям на ура
Интересно. А результатов не сохранил ? Сравнить с Batch API, да и вообще.

Насчёт индексов - как распределены ключи ?
Ну и - как часто делал коммит, чему равен FW, какая дисковая, что менял в конфиге ?
Интересно ещё повторить с xnet и embedded.
И с более широкой таблицей.
Тесты с блобами и обычным\BatchAPI тоже весьма интересны :)

Я не сильно губу раскатал ? ;)
14 фев 20, 00:00    [22079665]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 28568
Симонов Денис,

архитектура-то какая?
14 фев 20, 02:28    [22079687]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10378
kdv,

SS

hvlad
Интересно. А результатов не сохранил ? Сравнить с Batch API, да и вообще.


там в табличке не было поля threadId. В одном потоке скорость была примерно в 10 раз хуже. Batch API рулит :)
Постараюсь вечером повторить на новой таблице. Да и вообще оставить в коде оба варианта с переключением через аргументы консоли.

hvlad
Насчёт индексов - как распределены ключи ?


В одном потоке id=1, 2, 3, 4, 5 ... 1000000
Если потоков несколько то я просто разбиваю на одинаковые диапазоны. Т.е. для 2 потоков 1...500000 и 500001...1000000
Но в саму таблицу они конечно попадают как random пошлёт. Из одного потока всегда нарастают, но потоки могут чередоваться как захотят.

FW=ON, обычный SATA диск

xnet и embedded попробую. Вообще я пока не делал тест настраиваемым. Надо бы входные параметры в аргументы командной строки перенести.

hvlad
И с более широкой таблицей.
Тесты с блобами и обычным\BatchAPI тоже весьма интересны :)


а вот это настройками сделать сложнее, ибо я использую в коде макросы FB_MESSAGE. Т.е. придётся на каждый вариант таблицы свою процедуру заливки делать. С блобами там вообще в BatchAPI аж 4 варианта.

hvlad
Я не сильно губу раскатал ?


нормально. Мне же самому интересно, иначе бы я тест делать не стал. :)
14 фев 20, 09:54    [22079761]     Ответить | Цитировать Сообщить модератору
 Re: ANN: видео о мифе эффективности параллельной вставки  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 10378
Результаты тестов для разных протоколов.
Варианты с широкой таблицей и BLOB не тестировались.

Потоков/подключенийINETINET batchINET indexINET index batchXNETXNET batchXNET indexXNET index batchEmbEmb batchEmb index
139.1353.56945.75512.91919.5663.55832.08413.3524.4653.42713.922
220.6813.42431.9828.68811.3762.90228.6878.2333.7893.09611.093
415.3202.70218.8615.8069.5592.60614.6665.2293.6802.9555.870
814.8762.42018.0354.9458.2442.49312.7844.6492.8672.7476.167
1615.0852.43317.8964.9178.2262.45211.4915.0373.0932.6115.743


+ статистика для 1 потока


Analyzing database pages ...
T (191)
Primary pointer page: 2044, Index root page: 2045
Total formats: 1, used formats: 1
Average record length: 13.93, total records: 1000000
Average version length: 0.00, total versions: 0, max versions: 0
Average fragment length: 0.00, total fragments: 0, max fragments: 0
Average unpacked length: 20.00, compression ratio: 1.44
Pointer pages: 5, data page slots: 6624
Data pages: 6624, average fill: 57%
Primary pages: 6624, secondary pages: 0, swept pages: 0
Empty pages: 1, full pages: 6622
Fill distribution:
0 - 19% = 1
20 - 39% = 1
40 - 59% = 6622
60 - 79% = 0
80 - 99% = 0

Index PK_T (0)
Root page: 3272, depth: 3, leaf buckets: 1485, nodes: 1000000
Average node length: 11.87, total dup: 0, max dup: 0
Average key length: 9.04, compression ratio: 1.00
Average prefix length: 2.96, average data length: 6.04
Clustering factor: 6623, ratio: 0.01
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 24
60 - 79% = 0
80 - 99% = 1460


+ статистика для 4 потоков


Analyzing database pages ...
T (192)
Primary pointer page: 8338, Index root page: 8339
Total formats: 1, used formats: 1
Average record length: 13.93, total records: 1000000
Average version length: 0.00, total versions: 0, max versions: 0
Average fragment length: 0.00, total fragments: 0, max fragments: 0
Average unpacked length: 20.00, compression ratio: 1.44
Pointer pages: 5, data page slots: 6624
Data pages: 6624, average fill: 57%
Primary pages: 6624, secondary pages: 0, swept pages: 0
Empty pages: 1, full pages: 6622
Fill distribution:
0 - 19% = 1
20 - 39% = 1
40 - 59% = 6622
60 - 79% = 0
80 - 99% = 0

Index PK_T (0)
Root page: 2369, depth: 3, leaf buckets: 2522, nodes: 1000000
Average node length: 11.88, total dup: 0, max dup: 0
Average key length: 9.04, compression ratio: 1.00
Average prefix length: 2.96, average data length: 6.04
Clustering factor: 21662, ratio: 0.02
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 2154
60 - 79% = 1
80 - 99% = 366


выводы:
1. Массовая заливка данных в таблицы по сетевым протоколам (INET,WNET,XNET) при использовании Batch API существенно быстрее.
2. Batch API с Embedded даёт небольшой прирост производительности, что ожидаемо.
3. Параллельная вставка в одну таблицу без индексов не даёт существенного выигрыша (при использовании сетевых протоколов может сложится впечатление, что операция хорошо масштабируется, однако на самом деле это преодоление оверхеда сетевых протоколов, что хорошо видно при использовании Batch API или Embedded )
4. Параллельная вставка в одну таблицу с индексами масштабируется существенно лучше. Однако учтите, что при параллельной вставке записи будут попадать в таблицу не в том порядке в котором они были изначально, а потому индексы станут менее компактными. Кроме того их фактор кластеризации будет существенно хуже.

Сообщение было отредактировано: 15 фев 20, 16:08
15 фев 20, 16:08    [22080521]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4      [все]
Все форумы / Firebird, InterBase Ответить