Séb*_*ien 8 mysql sql symfony doctrine-orm
在symfony2,doctrine2中,我有一个触发错误的查询:
Error "1038 Out of sort memory, consider increasing server sort buffer size
Run Code Online (Sandbox Code Playgroud)
查询:
$queryBuilder = $this
->createQueryBuilder('object')
->leftJoin('object.objectCategory', 'c')
->leftJoin('object.medias', 'm')
->leftJoin('object.recipients', 'r')
->leftJoin('object.answers', 'a')
->leftJoin('object.tags', 't')
->leftJoin('object.user', 'u')
->leftJoin('object.votes', 'v')
->leftJoin('object.comments', 'comments')
->leftJoin('v.user', 'vuser')
->addSelect('c, t, v, u')
->groupBy('object, c, t, v, u')
->where('object.isVisible = :isVisible')
->orderBy('object.createdAt', 'DESC')
->setParameter('isVisible', true)
->addSelect('SUM(v.value) AS HIDDEN vote_value')
->orderBy('vote_value', 'DESC')
;
Run Code Online (Sandbox Code Playgroud)
如果我省略了分组,它运行得很好.如果我用较少的元素添加select和group,它也运行正常但是我在我的twig模板中启动了更多的子查询.
如何优化此查询以避免错误或通过分配更多内存(理想情况下仅用于此查询)来消除错误?
Roh*_*rte 26
只需运行 mysql 查询
SET GLOBAL sort_buffer_size = 256000000 // It'll reset after server restart
Run Code Online (Sandbox Code Playgroud)
设置永久
编辑下面的文件并添加
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
sort_buffer_size = 256000000
sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)
Web*_*net 15
MySQL有一个突出的问题,当尝试对带有 json 列的表进行排序时会导致此错误。看起来它影响 MySQL >= 8.0.18。截至我在这里回复时,团队仍在考虑这是否是一个错误。如果您受到此影响,请提供有关该线程的反馈。
虽然在这里增加缓冲区大小可以是一个解决方案,但 IMO 确实没有必要,因为即使按具有 json 列的表上的数字主键进行排序也会导致此问题。
根据我的经验,调整缓冲区大小不是很可靠,因为缓冲区大小与 json 列中内容的长度有关,因此虽然它可以解决当前的问题,但如果您的数据集增长,则需要再次调整。
如果您使用的是 docker mysql 容器,请在 docker-compose.yml 中添加以下设置:
db:
image: mysql:8
command: --sort_buffer_size=512K
Run Code Online (Sandbox Code Playgroud)
您可能需要在/etc/mysql/my.cnfset中增加mysql的缓冲区大小
sort_buffer_size to 256K
Run Code Online (Sandbox Code Playgroud)
小智 6
所以答案几乎从不增加缓冲区大小(并避免一般地接触 MySQL 中的默认设置),而是检查查询的质量和/或向您经常运行的列添加索引反问!!!
句法:
CREATE INDEX [index name] ON [table name]([column name]);
Run Code Online (Sandbox Code Playgroud)
文档:https : //dev.mysql.com/doc/refman/8.0/en/create-index.html
| 归档时间: |
|
| 查看次数: |
12852 次 |
| 最近记录: |