Синхронизируйте две схемы баз данных в MySQL

Нет способа сделать это быстрее с точки зрения алгоритмической сложности. Для вычисления этого результата требуется ровно O(n * m) операций, хотя бы потому, что у вас есть результирующий массив этого размера.

Есть несколько способов немного улучшить производительность самого кода.
Самый простой - переключиться на зубчатые массивы, как уже предлагалось в комментариях:

double[] array1 = new double [] { 1.1, 2.0, 3.0, 4.0, 5.0 };
double[] array2 = new double[] { 6.1, 7.0, 8.0};    
double[][] final_array = new double[5][];

for (int i = 0; i < 5; i++)
{
    final_array[i] = new double[3];
    for (int j = 0; j < 3; j++)
    {
        final_array[i][j] = Math.Abs(array1[i] - array2[j]);
    }
}

Подробнее о многомерных массивах и зубчатых массивах и их производительности можно узнать здесь:
Каковы различия между многомерным массивом и массивом массивов в C #?

Вы также можете пойти дальше и повысить производительность, используя небезопасные указатели для доступа к многомерному массиву или используя расширенные инструкции процессора (встроенные) , но ... вопрос в том: это действительно то, что вам нужно думать? Это единственное горлышко бутылки в системе с чрезвычайно высокой нагрузкой? Если это не так, просто оставьте свой код в том виде, в котором он есть, в четко читаемой и понятной форме. Говоря о производительности, O(n * m) асимптотическая сложность отлично подходит для массивов размером 15000.

14
задан Chris Martin 4 November 2014 в 05:57
поделиться

4 ответа

Вы рассмотрели использование репликации MySQL?

5
ответ дан 1 December 2019 в 14:33
поделиться

Вы могли бы хотеть посмотреть на некоторые инструменты, такие как dbdeploy (это - Java или версия .NET), и liquidbase и другие.

Хотя большинство из них, я думаю, применит наборы изменений в DB управляемым способом. Не знайте, могут ли они перепроектировать из существующих схем и выдержать сравнение.

E.

1
ответ дан 1 December 2019 в 14:33
поделиться

Для долгосрочного, профессионального решения необходимо следить за Schemamatic (http://versabanq.com/products/schemamatic.php). Эта ссылка показывает приложение для GUI, но все, что она делает, управляют программным обеспечением командной строки. На этой странице существует ссылка на ее сайт кода Google, где версия .NET C# Schemamatic может быть найдена. Ваше идеальное решение состояло бы в том, чтобы добавить поддержку MySQL к Schemamatic. Для SQL Server это прекрасно и делает точно, что Вы упомянули.

Теперь, для краткосрочного решения я предложил бы вывести данные, как которые Вы хотите с инструментами командной строки MySQL: mysqldump-A-c-uroot-ppassword> bkpmysql.sql

И игра с ним, хотя должно потребоваться некоторое время для достижения того, что Вы хотите. Schemamatic действительно кажется мне Вашим лучшим выбором. Сообщите мне, нужно ли Вам какое-либо разъяснение при попытке Schemamatic.

1
ответ дан 1 December 2019 в 14:33
поделиться

SQLyog делает это, и это здорово. Мы часто используем его в производстве.

4
ответ дан 1 December 2019 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: