我想要加快查询下面的一些想法:
SELECT BENCHMARK(1000000,ENCODE('hello',RAND()));
目前,我一直在玩my.cnf选项,我可以在9.5秒内执行此操作…但是,有什么方法可以让我更快?
什么样的variables与这个查询更相关? 更快的CPU会产生更好的结果吗?是否需要更快的磁盘?还是需要更多/更快的RAM?
我正在使用一个持久的固态硬盘50Gb,应该给我1500个iops(不是最快的,我知道…但这对testing有影响吗?)
这是一个没有任何数据库的Percona Server for MySQL的全新安装。
mysql Ver 14.14 Distrib 5.7.18-15, for debian-linux-gnu (x86_64) using 6.3
系统是Google Cloud上的Skylake CPU内核,具有6 GB RAM。
cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 85 model name : Intel(R) Xeon(R) CPU stepping : 3 microcode : 0x1 cpu MHz : 2000.064 cache size : 56320 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms rtm avx512f avx512dq rdseed adx clflushopt clwb avx512cd avx512bw avx512vl xsaveopt bugs : bogomips : 4000.12 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 85 model name : Intel(R) Xeon(R) CPU stepping : 3 microcode : 0x1 cpu MHz : 2000.064 cache size : 56320 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 1 apicid : 1 initial apicid : 1 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms rtm avx512f avx512dq rdseed adx clflushopt clwb avx512cd avx512bw avx512vl xsaveopt bugs : bogomips : 4000.12 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management:
这是我目前的testingconfiguration:
[mysql] # CLIENT # port = 3306 socket = /var/run/mysql/mysql.sock [mysqld] # GENERAL # user = mysql default-storage-engine = InnoDB socket = /var/run/mysql/mysql.sock pid-file = /var/run/mysql/mysql.pid # MyISAM # key-buffer-size = 32M myisam-recover = FORCE,BACKUP # SAFETY # max-allowed-packet = 1G max-connect-errors = 1000000 skip-name-resolve sql-mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY sysdate-is-now = 1 innodb = FORCE # CACHES AND LIMITS # tmp-table-size = 32M max-heap-table-size = 32M query-cache-type = 0 query-cache-size = 0 max-connections = 128 thread-cache-size = 100 open-files-limit = 65535 table-definition-cache = 4096 table-open-cache = 2000 join-buffer-size = 512K sort-buffer-size = 512K # LOGGING # log-error = /var/log/mysql/mysql-error.log log-queries-not-using-indexes = 0 slow-query-log = 0 slow-query-log-file = /var/log/mysql/mysql-slow.log # INNODB # innodb-flush-method = O_DIRECT innodb-log-files-in-group = 2 innodb-log-file-size = 64M innodb-flush-log-at-trx-commit = 2 innodb-file-per-table = 1 innodb-buffer-pool-size = 512M # extra innodb_doublewrite = 0 innodb_log_buffer_size = 64M
实际上,在testing一些服务器之后,出现了一种模式。
这个查询取决于一个快速的CPU,所以当我使用一个专用的cpu实例,而不是我们在云服务上看到的共享核心时,查询速度就会提高。
因此,CPU绑定。