Задать вопрос
  • C#+MySQL как избежать блокировок таблиц?

    iamserge
    @iamserge Автор вопроса
    Дмитрий, Да я заметил, погуглю про ramdisk - памяти много и ее я в жертву. Пока пытаюсь понять как в c# выполнить все это ... Ramdisk это такой интригующий, у меня 128Гб есть за между делом ...

    set profiling = 1;
    "Many UPDATE .... ";
    show profiles;
    show profile for query N;
  • C#+MySQL как избежать блокировок таблиц?

    iamserge
    @iamserge Автор вопроса
    Дмитрий, То что касается update не пробовал, а при update я закидываю туда по 10 - 20к за раз, ну минимум 10 штук это сейчас ... Но у меня его нету, нужно судя по всему это все интегрировать как-то в c# и куда-нибудь ответ забрать ... - надо чуть доделать. Когда таблицы мрут (они же все таки memory) - я собираю в них данные из обычных (они как архивные стали) и начинаю все заново. Тогда там по очень много update'ов и получается чтобы догнать расчет до самых свежих - ну и потом опять по чуть чуть т.е. 10 шьук за раз в ногу с обновлениями свежих

    как бы тогда использование памяти будет весьма хреновым

    В каком смысле? Расходов больших объемов или скорость просядет?
  • C#+MySQL как избежать блокировок таблиц?

    iamserge
    @iamserge Автор вопроса
    Дмитрий, Там расчет по формулам банальный в принципе, т.е. на выходе double как вполне себе число обычное. А где [-1;2] присваивается, это группировка т.е. запись оценивается относительно окружения и ей присваивается значение от [-1;2] в зависимости от того "какая она" - плохая или полезная. Ну то что с double пролетает на скорости света, c# вообще не замечает, что посчитал что-то. Второй расчет подольше, т.к. он даже не расчет - а скорее сравнение .... ну или расчет логических уравнений, можно и так сказать.

    Это к тому чтобы вообще перейти на чистый SQL? Я о таком думал, но как мне это поможет непонятно, там ведь я буду как бы не дольше вешать таблицу т.к. буду все в запросе делать - выборку, расчеты, сравнения, а потом еще и обновления сразу - я так вообще могу ее не освободить то .... и судя по всему все это будет "висеть" все это время - пока эти дела делает шарп, закидывая в MySQL все готовеньнькое ...
  • C#+MySQL как избежать блокировок таблиц?

    iamserge
    @iamserge Автор вопроса
    Дмитрий, В самые лучшие времена т.е. сейчас когда я досчитал все по чуть-чуть (т.е. не даю ей иметь много не посчитанных данных) - примерно так, маленький SELECT отправил:

    starting 0.000082
    Executing hook on transaction 0.000005
    starting 0.000008
    checking permissions 0.000007
    Opening tables 0.000032
    init 0.000006
    System lock 0.000007
    Waiting for table level lock 0.037934
    System lock 0.000022
    optimizing 0.000013
    executing 0.000011
    end 0.000004
    query end 0.000007
    closing tables 0.000011
    freeing items 0.000060
    cleaning up 0.000015
  • C#+MySQL как избежать блокировок таблиц?

    iamserge
    @iamserge Автор вопроса
    Akina, Ну UPDATE'ы я готовлю пачками по 3-20к и потом за раз отправляю, т.е. так (там один запрос вида WHERE id IN(...) на самом деле т.к. расчетные значения это int [-1;2] и можно их упаковками отправлять группируя). Второй поток наоборот, там double на выходе расчетов и там нужно каждое писать отдельно ... Но принцип тот же - приготовил строку - отправил в такую же конструкцию.

    using (MySqlConnection UpgradeConnection = new MySqlConnection(SQLConnect)) {
    
                            MySqlCommand commTOTAL = UpgradeConnection.CreateCommand();
                            commTOTAL.CommandText = NO_pPOINTS_QUERY; // Тут уже вообще все готово как строка с кучей запросов - просто отправить ... 
                            commTOTAL.CommandTimeout = 120; // Уже докатился до 120 сек ...
                            UpgradeConnection.Open();
    
                            if (commTOTAL.CommandText.Length > 0)
                                commTOTAL.ExecuteNonQuery();
    
                        }


    По количеству - запросто, но как это эффективно посмотреть? Т.е. у меня примерные цифры, по тому сколько данных есть ... Ну и да, это подождать надо, сейчас там досчиталось и пока все сносно работает, просто потому что все держится на 0.1 - 10/сек и новых нету ... Т.е. вместо 3-20к там столько, сколько записывается т.к. больше не для чего считать... Ну или я могу сделать рестарт и начать заново, т.к. это не проблема в принципе ...

    Но что касается MyISAM это ужасно, просто по сравнению с SDD все просто летает =( А альтернатив нет? Ну другие free субд, я уже готов все просто переписать чтобы не отказаться от MEMORY этих ... Это как то глупо - мне дали супер скорость и тут же ее забрали, даже не дали попробовать как это работает =/
  • Как использовать Where,Select в для такого случая?

    iamserge
    @iamserge Автор вопроса
    Еще пробую это прямо из БД достатать так, т.к. есть синтаксис для c# схожий с SQL, но однако получив просто ключи далее не могу понять как мне их в этом же запросе использовать и по каждому вести подсчет ... То есть самый бестолковый способ тут это получив ключи начать по каждому делать запрос отдельно ... Но это однако очень много запросов ресурсоемких, ...

    SELECT distinct (eventSTART -eventEND )/1000, ???? FROM event_history.ae_2019;
  • C# и OutOfmemoryExtension - как перейти на полноценные 64х?

    iamserge
    @iamserge Автор вопроса
    Роман, Спс, а ведь и правда есть такой список =/
  • C# и OutOfmemoryExtension - как перейти на полноценные 64х?

    iamserge
    @iamserge Автор вопроса
    Василий Банников, ок, спасибо :) Когда я отойду от перманентного блаженства от того что все работает то пожалуй посмотрю на это серьезнее. Но пока ознакомлюсь все таки ...
  • C# и OutOfmemoryExtension - как перейти на полноценные 64х?

    iamserge
    @iamserge Автор вопроса
    Василий Банников, Уже прямо сейчас? А мне дорого оно обойдется? Я бы и просто конфиг бы не поленился поправить ... Хотя кажется уже поправлен иначе как объяснить словарики что были под 5-6Гб после снятия заклятой галочки. Может быть именно она и помогла мне с этим
  • C# и OutOfmemoryExtension - как перейти на полноценные 64х?

    iamserge
    @iamserge Автор вопроса
    Василий Банников,
    3. На самом деле именно по размеру он скромный. Всего то 60М записей, а в int аж 2Млрд. Столько у меня слава богу нету)
    4. Ох, я тот кто не хочет даже просто это обрабатывать, не то чтобы еще обернуть это красиво и скрыть следы ... DDR4 сейчас дешевый довольно, а возится мне с ними много ...
    5. Собственно файл и там и про Core есть и как будто у меня .net framework и я core тоже подключаю ...
    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
      <PropertyGroup>
        <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
        <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
        <ProjectGuid>{10F57573-3782-4F08-B170-0082BFDD01DF}</ProjectGuid>
        <OutputType>WinExe</OutputType>
        <RootNamespace>FSA</RootNamespace>
        <AssemblyName>FSA</AssemblyName>
        <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
        <FileAlignment>512</FileAlignment>
        <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
        <Deterministic>true</Deterministic>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <PlatformTarget>AnyCPU</PlatformTarget>
        <DebugSymbols>true</DebugSymbols>
        <DebugType>full</DebugType>
        <Optimize>false</Optimize>
        <OutputPath>bin\Debug\</OutputPath>
        <DefineConstants>DEBUG;TRACE</DefineConstants>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
        <Prefer32Bit>false</Prefer32Bit>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
        <PlatformTarget>AnyCPU</PlatformTarget>
        <DebugType>pdbonly</DebugType>
        <Optimize>true</Optimize>
        <OutputPath>bin\Release\</OutputPath>
        <DefineConstants>TRACE</DefineConstants>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
      </PropertyGroup>
      <ItemGroup>
        <Reference Include="MySql.Data, Version=8.0.29.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL" />
        <Reference Include="System" />
        <Reference Include="System.Core" />
        <Reference Include="System.Windows.Forms.DataVisualization" />
        <Reference Include="System.Xml.Linq" />
        <Reference Include="System.Data.DataSetExtensions" />
        <Reference Include="Microsoft.CSharp" />
        <Reference Include="System.Data" />
        <Reference Include="System.Deployment" />
        <Reference Include="System.Drawing" />
        <Reference Include="System.Net.Http" />
        <Reference Include="System.Windows.Forms" />
        <Reference Include="System.Xml" />
      </ItemGroup>
      <ItemGroup>
        <Compile Include="Form1.cs">
          <SubType>Form</SubType>
        </Compile>
        <Compile Include="Form1.Designer.cs">
          <DependentUpon>Form1.cs</DependentUpon>
        </Compile>
        <Compile Include="Program.cs" />
        <Compile Include="Properties\AssemblyInfo.cs" />
        <EmbeddedResource Include="Form1.resx">
          <DependentUpon>Form1.cs</DependentUpon>
        </EmbeddedResource>
        <EmbeddedResource Include="Properties\Resources.resx">
          <Generator>ResXFileCodeGenerator</Generator>
          <LastGenOutput>Resources.Designer.cs</LastGenOutput>
          <SubType>Designer</SubType>
        </EmbeddedResource>
        <Compile Include="Properties\Resources.Designer.cs">
          <AutoGen>True</AutoGen>
          <DependentUpon>Resources.resx</DependentUpon>
        </Compile>
        <None Include="Properties\Settings.settings">
          <Generator>SettingsSingleFileGenerator</Generator>
          <LastGenOutput>Settings.Designer.cs</LastGenOutput>
        </None>
        <Compile Include="Properties\Settings.Designer.cs">
          <AutoGen>True</AutoGen>
          <DependentUpon>Settings.settings</DependentUpon>
          <DesignTimeSharedInput>True</DesignTimeSharedInput>
        </Compile>
      </ItemGroup>
      <ItemGroup>
        <None Include="App.config" />
      </ItemGroup>
      <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    </Project>
  • C# и OutOfmemoryExtension - как перейти на полноценные 64х?

    iamserge
    @iamserge Автор вопроса
    Спасибо. А ммм... где посмотреть в самой среде? Т.е. оно у меня в исходниках ... Вроде бы не должно быть секретом для меня заголовки моего же приложения ...

    p.s. Диспетчер его точно не считае 32 битным
  • C# и OutOfmemoryExtension - как перейти на полноценные 64х?

    iamserge
    @iamserge Автор вопроса
    1. Да целевая точно x64 и памяти много, т.е. этот пункт - ОК
    2. Повсеместно использую Int64 если речь об этом ...
    3. Она плавает, ну то есть это не одно место конкретное - почти каждый раз новое (видимо там где память по факту кончалась)
    4. Именно этого хочу все меньше, даже думаю сделать себе +128GB еще просто чтобы не заниматья обслуживанием этих "кусочков" т.е. помнить где остановился и писать всякое лишнее
    5. Обязательно перепроверю, т.к. сейчас чудо исполняется до сих пор и работает уже второй час как - но и понять где я и с чем мне не помешает. Не отличаю на слух core от framework на самом деле =)

    VS на самом деле съела 1,7Gb и вроде как держится в рамках, хотя и трудно следить за ней вечно т.к. процесс долгий. Просто я так понял что она тоже может съесть много при запуске из нее, если приложение прожорливое - хз зачем, может как раз чтобы ошибки искать ...

    dotMemory - ок попробую и его. Но кажется сами настройки приложения в VS исчерпаны и о боже мой кажется на этом все мои беды кончаются, по крайней мере сейчас ...
  • Blogger и xml "база данных" - как это может работать?

    iamserge
    @iamserge Автор вопроса
    rPman, iframe я забыл когда последний раз использовал если честно, даже не думал об этом ... Но все равно спасибо, мало ли что может пригодиться
  • Blogger и xml "база данных" - как это может работать?

    iamserge
    @iamserge Автор вопроса
    rPman, Ого. А можно поподробнее про 8х/3х ... О каких форматах идет речь? Разница уж больно заметная между ними ...
  • Blogger и xml "база данных" - как это может работать?

    iamserge
    @iamserge Автор вопроса
    Василий Банников, А я что ни будь выиграю в плане скорости? То есть план пока созрел примерно такой:

    1. Использовать сжатие
    2. Отдельно в файле сохранить данные и скорее всего где то на стороне ...
    3. В таком формате попробовать сделать все довольно быстрым и для себя при этом удобным более менее ...

    Массивы не самый удобный формат когда делаешь сложную структуру вручную просто - json как таковой использовал только как проходный и сам его не "создавал", даже как то в голову такая идея не приходила ни разу

    Вопрос о скорости именно относительно него - т.к. он тоже не выглядит таким уж приятным для ручного создания БД в несколько МБ текста
  • Blogger и xml "база данных" - как это может работать?

    iamserge
    @iamserge Автор вопроса
    Спасибо, слышал про гугл диск, жаль конечно что это был скорее баг чем фича ...
  • Blogger и xml "база данных" - как это может работать?

    iamserge
    @iamserge Автор вопроса
    Василий Банников, как и где это в json будет храниться?
  • Blogger и xml "база данных" - как это может работать?

    iamserge
    @iamserge Автор вопроса
    rPman, Не покажу, нет его пока. Но это внутриигровые данных - ха-рки оружия, игрока и т.п....
  • Как сделать постоянный фоновый Process в C#?

    iamserge
    @iamserge Автор вопроса
    Дмитрий Беляев, Уже все готово, но не помогает ... У меня вываливается все кучей как и ранее ...

    private async void button1_Click(object sender, EventArgs e)
            {
    
                try
                {
    
                    using (var process = Process.Start(psi))
                    {
                        bool hasOutput, hasErrors;
                        do
                        {
                            string output = await process.StandardOutput.ReadLineAsync();
                            string errors = await process.StandardError.ReadLineAsync();
    
                            hasOutput = !(output is null);
                            hasErrors = !(errors is null);
    
                            if (hasOutput) richTextBox2.AppendText(output);
                            if (hasErrors) richTextBox2.AppendText(errors);
                        }
                        while (hasOutput || hasErrors);
                    }
    
                }
    
                catch (Exception eU)
                {
    
                    // Сообщение о ошибке
                    MessageBox.Show(eU.Message);
    
                    // Информаци о ошибке
                    MessageBox.Show(eU.ToString());
    
                }
    
    
            }
  • Как сделать постоянный фоновый Process в C#?

    iamserge
    @iamserge Автор вопроса
    Дмитрий Беляев, То есть мне буквально не удается получить "Next step 0" как только он готов, я могу его получить как только готов "Next step 10" и все остальное между ними ... Даже цикл и перенос var process = Process.Start(psi) c Using никак не помог =( Все равно весь вывод вываливается одной кучей