* Если вам лень читать описание, в конце концов вы найдете мой вопрос ...
Привет, я строю простую базу данных:
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 Job, 16 потоков (я обнаружил, что это лучшая производительность на моей машине)
В любом случае, мой вопрос о результате, у меня есть от 85 до 105 минут, чтобы вставить 1 000 000 строк. Это быстро или мне нужно искать другую базу данных для работы?
P.S
* Когда я вставляю, я также хэширую с алгоритмом MD5Crypt