Я працюю над додатком, який включає багато записів у базу даних, приблизно ~ 70% вставок і 30% читає. Це співвідношення також включатиме оновлення, які я вважаю одним читанням та одним записом. Через оператори вставлення кілька клієнтів вставляють дані в базу даних через оператор insert нижче:
$mysqli->prepare("INSERT INTO `track` (user, uniq_name, ad_name, ad_delay_time ) values (?, ?, ?, ?)");
Питання в тому, чи слід використовувати або insert_delay, або використовувати механізм mysqli_multi_query, оскільки оператор insert використовує ~ 100% процесора на сервері. Я використовую двигун InnoDB у своїй базі даних, тож вставити затримку неможливо. Вставлення на сервері становить ~ 36 к / год і 99,89% прочитаного, також я використовую оператор select, там вилучаю дані сім разів за один запит , на виконання цього запиту на сервері потрібно 150 секунд. Яку техніку чи механізм я можу використовувати для цього завдання? Моя пам'ять сервера - 2 Гб, чи слід розширювати пам'ять ?. Погляньте на цю проблему, будь-яка пропозиція буде мені вдячна.
Структура таблиці:
+-----------------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user | varchar(100) | NO | | NULL | |
| uniq_name | varchar(200) | NO | | NULL | |
| ad_name | varchar(200) | NO | | NULL | |
| ad_delay_time | int(11) | NO | | NULL | |
| track_time | timestamp | NO | MUL | CURRENT_TIMESTAMP | |
+-----------------+--------------+------+-----+-------------------+----------------+
У моїй базі даних теперішній статус, він показує 41k вставки (записи), що дуже повільно для моєї бази даних.
SHOW FULL PROCESSLIST
коли він займає 100% процесор? Скільки з'єднань ви дозволяєте порівняно з кількістю знятих за цей час?
SHOW GLOBAL VARIABLES LIKE 'innodb%';
і SELECT VERSION();
та відображати їх висновок.