Переменные:
1) Таблица с именем doc_types, которая имеет много типов документов, которые пользователь хочет в своей системе.
2) Таблица именованных документов, в которой есть все документы, которые создает пользователь.
3) Таблица с именем secuence, это решение проблемы параллелизма, которая у меня все еще есть.
Эта проблема:
На сервер загружается более или менее 1200 запросов в секунду, причем более 100 уникальных пользователей работают по параллельной схеме в часы пиковой нагрузки. Каждый пользователь генерирует несколько типов документов, и у каждого должен быть свой уникальный номер по типу документа.
Так долго, я до сих пор не могу починить.
Мое текущее решение:
2 функции:
1) Вызывается для генерации следующего числа с использованием AUTOINCREMENT, чтобы обеспечить его результат
function generate_secuence($last_number)
{
// get the last id generated in the secuence table
$sql="select max(id_secuence) as last_secuence from secuence";
$result=mysql_query($sql);
$row=mysql_fecth_object($result);
$last_secuence=$row->last_secuence;
// insert a decoy in order to generate the unique autoincrement number
$sql="insert into secuence (ref) values ('$last_number')";
mysql_query($sql);
$new_secuence=mysql_insert_id();
// calculate the next number in a way that we get hold of the autoincrement regardless of the user timing
$next_number=$last_number - $last_secuence + $new_secuence;
return($next_number);
}
2) Вызывается при сохранении каждого документа, если у него еще нет номера.
function get_next_doc_number($doc_type)
{
// get the last number of the document type the user is saving
$sql="select max(doc_number) as last_num from documents where id_doc_type='$doc_type'";
$result=mysql_query($sql);
$row=mysql_fecth_object($result);
$last_number=$row->last_num;
// call the function
$next_number=generate_secuence($last_number);
return($next_number);
}
Мой вопрос:
Где мое решение не может решить проблему, и как мне это исправить?
Задача ещё не решена.
Других решений пока нет …