yejr 发表于 2024-7-24 17:23:51

corey 发表于 2024-7-24 17:20
我现在得到的结论是跟配置无关,因为greatsql跟mariadb甚至都用基本的几条配置,mariadb不会出现说执行很 ...

可以在两边执行 mysqladmin var 的结果再做对比,虽然很多是默认配置,但不代表就都是一样的。

另外,从你的业务类型来看,是往GreatSQL中的宽表插入大量二进制数据(疑似图片或文件附件二进制内容),这种情况下本身就容易发生行溢出(innodb page分裂),肯定是要更慢的。同等条件下,如果也向mariadb中的宽表插入这些数据,它可以做到很快,这个明显也不科学。

如果不能提供详细信息,我们也帮不上。

KAiTO 发表于 2024-7-26 11:10:58

帖子中由于插入字段过长,删减一部分SQL语句,使其它读者方便阅读

------
插入语句如下

建表语句如下


GreatSQL 相关信息
greatsql> show variables like '%version%';
+--------------------------------------------------+--------------------------------------------+
| Variable_name                                    | Value                                    |
+--------------------------------------------------+--------------------------------------------+
| admin_tls_version                              | TLSv1.2,TLSv1.3                            |
| gdb_sqld_version                                 | 8.0.32.5                                 |
| group_replication_allow_local_lower_version_join | OFF                                        |
| group_replication_recovery_tls_version         | TLSv1.2,TLSv1.3                            |
| immediate_server_version                         | 999999                                     |
| innodb_version                                 | 8.0.32-8.0.32                              |
| original_server_version                        | 999999                                     |
| protocol_version                                 | 10                                       |
| replica_type_conversions                         |                                          |
| slave_type_conversions                           |                                          |
| tls_version                                    | TLSv1.2,TLSv1.3                            |
| version                                          | 8.0.32-25                                  |
| version_comment                                  | GreatSQL, Release 25, Revision 79f57097e3f |
| version_compile_machine                        | x86_64                                     |
| version_compile_os                               | Linux                                    |
| version_compile_zlib                           | 1.2.13                                     |
| version_suffix                                 |                                          |
+--------------------------------------------------+--------------------------------------------+
17 rows in set (0.00 sec)使用 GreatSQL 为 8.0.32-25 版本

配置文件(my.cnf)如下,参考安装手册中提供的 my.cnf 此处没做修改
- Ubuntu系统中安装GreatSQL | GreatSQL用户手册
或推荐的 my.cnf 模板
- my.cnf参考模板 | GreatSQL用户手册
注意不要用全默认值,可能会导致 GreatSQL 性能较差,例如ibp只有128M等!若拿定不了参数值设置,可使用叶老师的小工具
- 老叶出品,方便可靠的MySQL my.cnf配置文件生成工具 (imysql.com)

单独运行
第一次
greatsql> source /usr/local/insert.sql;
Query OK, 61 rows affected, 10 warnings (0.23 sec)
Records: 61Duplicates: 0Warnings: 10第二次
greatsql> source /usr/local/insert.sql;
Query OK, 61 rows affected, 10 warnings (0.21 sec)
Records: 61Duplicates: 0Warnings: 10第三次
greatsql> source /usr/local/insert.sql;
Query OK, 61 rows affected, 10 warnings (0.19 sec)
Records: 61Duplicates: 0Warnings: 10脚本运行5次
#!/bin/bash

for i in {1..5}
do
    echo "Execution $i:"
    # 使用 `time` 命令来记录执行时间
    { time ./GreatSQL-8.0.32-25-Linux-glibc2.28-x86_64/bin/mysql -S /data/greatsql/mysql.sock -uroot -Dtest < /usr/local/insert.sql; } 2>&1
    echo "---------------------------------------"
done结果如下
root@hyzhang:/usr/local# ./execute.sh
Execution 1:

real    0m0.303s
user    0m0.102s
sys   0m0.017s
---------------------------------------
Execution 2:

real    0m0.293s
user    0m0.100s
sys   0m0.013s
---------------------------------------
Execution 3:

real    0m0.315s
user    0m0.095s
sys   0m0.017s
---------------------------------------
Execution 4:

real    0m0.317s
user    0m0.125s
sys   0m0.009s
---------------------------------------
Execution 5:

real    0m0.291s
user    0m0.097s
sys   0m0.012s
---------------------------------------结论如下
同样的 Insert 语句在 GreatSQL 数据库中并不会出现性能迟缓的情况。初步推断,此问题的成因在于 my.cnf 的配置有误。诸如 innodb_buffer_pool_size、innodb_log_buffer_size、tmp_table_size、max_heap_table_size、innodb_write_io_threads 以及 innodb_read_io_threads 等参数,倘若采用默认值,或许会对性能产生不利影响。

KAiTO 发表于 2024-7-26 14:11:00

2024.07.26解决
经排查是配置文件问题,更换GreatSQL官网推荐配置文件后解决
页: 1 [2]
查看完整版本: 同样的一条 insert sql在greatsql中执行要较慢,在mariadb中较快