Django 为什么SQL插入(mariadb)会随着表的增长而变慢

Django 为什么SQL插入(mariadb)会随着表的增长而变慢,django,django-models,mariadb-10.5,Django,Django Models,Mariadb 10.5,我正在尝试处理一些数据,并使用django将其写入mariadb(10.5.10)表: 这是我的模型 class AbstractCandle(models.Model): exchanged_security = models.ForeignKey('market.exchangedsecurity', on_delete=models.CASCADE) date = models.DateTimeField(db_index=True) duration = mode

我正在尝试处理一些数据,并使用django将其写入mariadb(10.5.10)表:

这是我的模型

class AbstractCandle(models.Model):
    exchanged_security = models.ForeignKey('market.exchangedsecurity', on_delete=models.CASCADE)
    date = models.DateTimeField(db_index=True)
    duration = models.DurationField(db_index=True)
    ask_open = models.FloatField(default=-1, db_index=True)
    ask_high = models.FloatField(default=-1, db_index=True)
    ask_low = models.FloatField(default=-1, db_index=True)
    ask_close = models.FloatField(default=-1, db_index=True)

    class Meta:
        unique_together = [('exchanged_security', 'date', 'duration')]
        abstract = True
我对mariadb进行了一些调整,使其更快:

innodb_compression_algorithm=none
innodb_autoinc_lock_mode=2
innodb_buffer_pool_size=1024M
max_allowed_packet=1024M
innodb-log-buffer-size=512M
wait_timeout=28800
unique_checks=0
innodb_flush_log_at_trx_commit=0
foreign_key_checks=0
sync_binlog=0
我的问题是,随着表的增长,插入吞吐量变得越来越慢(对于8000万行,该对象的表大约是28gb)

监控显示(服务器仅用于mariadb):

网络 阅读 15.2GB

写 2.78GB

块I/O 阅读 238GB

写 14.9 TB

问题 存储写入速度是瓶颈吗

为什么即使我禁用了索引和约束,mariadb仍要在硬盘上写这么多东西

如何防止插入速度随着表的增长而下降?(我只占需要插入的行数的25%,我担心最后10%的行数将远远超出预期)

附言:
在启动之前,表上的键也被禁用了,这是MySQL中的一个已知问题,部分原因是在插入新行时重写了索引,MySQL将该行放在每个索引的位置


我希望这个

交换性在服务器上也设置为0谢谢你的帮助,你关于重写索引的评论就是原因。