NAS上的MySQL性能非常慢

时间:2018-09-21 22:55:26

标签: mysql mariadb nas

只需让自己成为Asustor NAS即可处理我的视频,图片,音乐等。 我认为在家里既有台式机又有笔记本电脑,我认为在NAS(已经预先安装了MariaDB的NAS)上设置数据库是个好主意。

设置:RAID 1,通过具有千兆位连接的1.3 Mbps WiFi连接,磁盘最大读取速度约为110MB / s。使用BlackMagic Benchmark达到60MB / s。

查询:

    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.8k行,表items具有约4.7k行。该查询影响5k行,运行时间在4.8到7.0秒之间,对于这样一个简单的查询来说似乎是荒谬的。我曾经在本地主机上运行相同的查询(好吧,它是NVMe SSD,我得到的速度要快得多),以毫秒为单位。 order_id是一个VARCHAR,其中包含大约10个字符。

将所有数据插入所有表中大约需要7分钟(最后一次是9分钟):

`orders` - 1.7k rows, 11 columns
`items` - 4.8k rows, 12 columns
`customers` - 1.7k rows, 9 columns

我的问题:

  1. 性能真的不好吗?还是在使用NVMe SSD后获得错误的性能基准?
  2. 如果确实不好,我该怎么做才能改进它(仍将数据库托管在NAS上)?
  3. 我对在线托管数据库的性能有何期望?

非常感谢。

**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;`

1 个答案:

答案 0 :(得分:1)

  1. 性能真的不好吗?还是在使用NVMe SSD后获得错误的性能基准?

是的,这是一种不好的表现。为查询正确建立索引将有助于解决查询的性能问题。仅板载512M硬盘就很难使NAS使用innodb_buffer_pool和可用内存作为磁盘缓存。

  1. 如果确实不好,我该怎么做才能改进它(仍将数据库托管在NAS上)?

使用连接和顺序帮助正确地索引表。设计更改以将整数主键用于联接。第一步,如果order_id确实不是utf8,而只是对该列进行latin1更改,这会使键变小,那么也可以将其更改为主键。

由于这是查询中整个两个表的数据搜索,因此,如果它可以全部保留在RAM中,那么它只会消除IO延迟。

  1. 我对在线托管数据库的性能有何期望?

托管数据库将提供更多RAM,并可能提供更快的CPU。