* если вы хотите поленитесь прочитать описание вы можете найти мой вопрос в конце концов ...MySQL Вставить Производительность stressTool
Привет, я построить простую базу данных:
CREATE TABLE `users` (
`id` varchar(45) NOT NULL,
`full_name` varchar(45) NOT NULL,
`first_name` varchar(45) NOT NULL,
`last_nmae` varchar(45) NOT NULL,
`login` varchar(45) NOT NULL,
`password` varchar(45) NOT NULL,
PRIMARY KEY (`id`,`full_name`,`login`),
UNIQUE KEY `idusers_UNIQUE` (`id`),
UNIQUE KEY `login_UNIQUE` (`login`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$
Теперь я тестирование производительности вставки одной строки.
Я создал инструмент для стресса с C# и запустил его в 1M строк. Это код, если вы заинтересованы:
abstract class Job
{
private static object synObject = new object();
private static int _id = 0;
private static DateTime startingTime = DateTime.Now;
private const int JOB_PER_SIRCLE = 10;
protected int id;
public Job()
{
lock (synObject)
{
_id++;
id = _id;
}
}
public void run()
{
while (true)
{
for (int i = 0; i < JOB_PER_SIRCLE; i++)
{
doJob();
}
lock (synObject)
{
calculate();
}
}
}
private static DateTime lastLog = DateTime.Now;
private static long numOfJobsAcomplished = 0;
private static long totalNumOfJobsAcomplished = 0;
private static void calculate()
{
totalNumOfJobsAcomplished += JOB_PER_SIRCLE;
numOfJobsAcomplished += JOB_PER_SIRCLE;
DateTime now = DateTime.Now;
TimeSpan timePass = now - lastLog;
if (timePass.TotalSeconds > 1)
{
double total = 1000000;
TimeSpan speed = TimeSpan.FromMilliseconds(timePass.TotalMilliseconds/numOfJobsAcomplished * total);
Console.WriteLine("Speed = " + String.Format("{0:00.0000}", speed.TotalMinutes) + " Completed " + String.Format("{0:00.000}", totalNumOfJobsAcomplished/total * 100) + "% time pass " + (now - startingTime));
lastLog = now;
numOfJobsAcomplished = 0;
}
}
protected abstract void doJob();
}
В методе doJob() Я делаю вставку и я бегу, 16 потоков 16 Иова (я обнаружил, что это лучшая производительность на моей машине)
В любом случае, мой вопрос касается результата, я получаю от 85 до 105 минут, чтобы вставить 1 000 000 строк. Является ли это быстрым или я должен искать другую базу данных для работы?
P.S * Когда я вставив я хэширования с помощью алгоритма MD5Crypt
'Быстро это субъективно. Каковы ваши требования и/или ограничения?Каким будет поведение нагрузки в действительности? Какие другие операции чтения или записи будут происходить на столе? Также важно формат SQL-запроса. Используете ли вы параметризованные запросы для минимизации сетевого трафика, времени разбора и компиляции и т. Д.? – MatBailie
@Dems Я просто использую «вставить в значения пользователей» («...»); –
Посмотрите на параметризованные запросы. Когда вы повторяете один и тот же запрос снова и снова, они часто выполняют быстрее. – MatBailie