Я только что получил себе Asustor NAS для управления моими видео, фотографиями, музыкой и т. Д. Имея рабочий стол и ноутбук в доме, я подумал, что было бы неплохо настроить мою базу данных на NAS (которая уже поставляетсяс предустановленной MariaDB).
Настройка: RAID 1, макс. скорость чтения около 110 МБ / с с диска, подключенного через 1,3 Мбит / с WiFi с гигабитным соединением.Получение около 60 МБ / с с использованием BlackMagic Benchmark.
Запрос:
SELECT items.title, items.discount, items.qtd, items.price, ((price * qtd) - discount) AS total, DATE_FORMAT(orders.created_at, '%m-%y')
FROM items
INNER JOIN orders ON orders.order_id = items.order_id
ORDER BY created_at;
Таблица orders
содержит около 1,8 тыс. Строк, таблица items
- около 4,7 тыс. Строк.Запрос затрагивает 5 тысяч строк и занимает от 4,8 до 7,0 секунд, что кажется абсурдом для такого простого запроса.Раньше я выполнял тот же запрос на моем локальном хосте (хорошо, это SSM NVMe, который я получаю намного быстрее), за миллисекунды.order_id
- это VARCHAR, содержащий около 10 символов.
Потребовалось около 7 (9 последних раз) минут, чтобы вставить все данные во все таблицы:
`orders` - 1.7k rows, 11 columns
`items` - 4.8k rows, 12 columns
`customers` - 1.7k rows, 9 columns
Мой вопрос:
- Это действительно так плохо с производительностью, или я получаю неправильный тест производительности после использования SSM-накопителей NVMe?
- Если это действительно плохо, что я могу сделать, чтобы улучшитьэто (все еще хостинг моей БД на моем NAS)?
- Чего можно ожидать с точки зрения производительности в размещенной в Интернете базе данных?
Большое спасибо.
**Tables:**
`CREATE TABLE `orders` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`order_id` varchar(15) DEFAULT NULL COMMENT 'VA',
`created_at` datetime DEFAULT NULL,
`gateway` varchar(25) DEFAULT NULL,
`total` decimal(15,0) DEFAULT NULL,
`subtotal` decimal(15,0) DEFAULT NULL,
`status` varchar(20) DEFAULT NULL,
`discounts` decimal(15,0) DEFAULT NULL,
`total_price` decimal(15,0) DEFAULT NULL,
`order_number` varchar(15) DEFAULT NULL,
`processing` varchar(15) DEFAULT NULL,
`customer_id` varchar(15) DEFAULT NULL,
`number` varchar(15) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `number` (`number`),
UNIQUE KEY `order_id` (`order_id`),
KEY `customer_id` (`customer_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1712 DEFAULT CHARSET=utf8;`