mysql数据库环境优化-创新互联

一、环境优化

1.1内存优化

由于数据库主机一般内存较大,因此采用huge page。而且尽量使用80%的内存,以空间换时间。

成都创新互联是一家专注于网站建设、网站设计与策划设计,水富网站建设哪家好?成都创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:水富等地区。水富做网站价格咨询:13518219792

/etc/sysctl.conf配置参数:

vm.hugetlb_shm_group=3306

kernel.shmmax=243805679616

kernel.shmall=59522871

1.2虚拟内存优化

由于数据库对存取速度反应较大,因此关闭swap。

1.3网络优化

由于公司需要直接访问IDC机房中数据库,因此网络需要优化。

/etc/sysctl.conf配置参数:

net.core.somaxconn = 40000

net.ipv4.tcp_max_syn_backlog = 40000

net.ipv4.ip_local_port_range = 1024 65535

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.core.wmem_max=12582912

net.core.rmem_max=12582912

net.ipv4.tcp_rmem= 10240 87380 12582912

net.ipv4.tcp_wmem= 10240 87380 12582912

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_timestamps = 1

net.ipv4.tcp_sack = 1

net.ipv4.tcp_no_metrics_save = 1

net.core.netdev_max_backlog = 5000

1.4IO优化

尽量减少对IO的限制。因此在保障硬盘读写正常的情况下,需要增加如下/etc/sysctl.conf参数:

fs.file-max = 1000000

/etc/security/limits.conf配置:

*               soft nofile                 65535

*               hard   nofile          65535

mysql  hard  memlock unlimited

mysql  soft   memlock unlimited

二、数据库优化

2.1源码编译优化

采用较优的编译参数:

-m64 -Ofast -flto -march=native -funroll-loops -mfpmath=sse -static -g

编译命令:

cmake .. -DCMAKE_CXX_FLAGS_DEBUG=="-DUNIV_DEBUG -DUNIV_SYNC_DEBUG" \

-DCMAKE_BUILD_TYPE=RelWithDebInfo \

-DCMAKE_C_FLAGS_RELWITHDEBINFO="-m64 -Ofast -flto -march=native -funroll-loops -mfpmath=sse -static -g" \

-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-m64 -Ofast -flto -march=native -funroll-loops -mfpmath=sse -static -g" \

-DBUILD_CONFIG=mysql_release \

-DFEATURE_SET=community \

-DWITH_EMBEDDED_SERVER=ON \

-DCMAKE_INSTALL_PREFIX=/usr/local/percona \

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

-DMYSQL_DATADIR=/data/mysql/data \

-DSYSCONFDIR=/etc \

-DMYSQL_TCP_PORT=3306 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_FEDERATED_STORAGE_ENGINE=1 \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \

-DWITH_READLINE=system \

-DENABLED_LOCAL_INFILE=1 \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_FAST_MUTEXES=ON\

-DWITH_ATOMIC_LOCKS=rwlocks

2.2内存优化

尽量采用内存的80%,作为数据库内存空间。

配置参数:

innodb_buffer_pool_size=180G

join_buffer_size=32M

key_buffer_size=256M

read_buffer_size=8388608

read_rnd_buffer_size=4M

2.3连接池优化

采用连接池,以负载高并发的访问。

配置参数:

thread_handling=pool-of-threads

thread_pool_high_prio_mode=statements

thread_pool_max_threads=100000

thread_pool_size=48

thread_pool_oversubscribe=10

thread_pool_stall_limit=300

2.4IO优化

配置参数:

sync_binlog=1000

innodb_read_io_threads=48

innodb_thread_concurrency=0

innodb_use_native_aio=1

innodb_write_io_threads=48

innodb_flush_method=ALL_O_DIRECT

2.5网络优化

配置参数:

max_connections=1000

net_buffer_length=1M

2.6结构优化

对一些大表进行分区处理,如crm_consume、crm_consume_detail、crm_customer等,以优化查询。

2.7综合优化

/etc/my.cnf配置参数:

[mysqld]

audit_log_rotations=5

audit_log_rotate_on_size=20480000

slow_query_log=1

slow_query_log_file=/data/mysql/data/db4-slow.log

long_query_time=5

back_log=1024

big_tables=1

bind_address=0.0.0.0

binlog_cache_size=8M

binlog_format=row

basedir=/usr/local/percona

binlog_stmt_cache_size=8M

datadir=/data/mysql/data/

delayed_queue_size=10000

enforce-gtid-consistency=ON

default_time_zone=+8:00

event_scheduler=1

expire_logs_days=7

federated

gtid_mode=ON

innodb_additional_mem_pool_size=64M

innodb_buffer_pool_instances=16

metadata_locks_hash_instances=16

table_open_cache_instances=16

innodb_buffer_pool_size=180G

innodb_data_file_path=ibdata1:1024M:autoextend

innodb_data_home_dir=/data/mysql/data/

innodb_file_per_table=1

innodb_flush_log_at_trx_commit=2

innodb_autoinc_lock_mode=2

innodb_flush_method=ALL_O_DIRECT

innodb_flush_neighbors=0

innodb_io_capacity=1000

innodb_lock_wait_timeout=50

innodb_log_buffer_size=512M

innodb_log_file_size=4096M

innodb_log_files_in_group=3

innodb_log_group_home_dir=/data/mysql/data/

innodb_max_dirty_pages_pct=75

innodb_old_blocks_pct=30

innodb_old_blocks_time=1000

innodb_open_files=4096

innodb_purge_threads=1

innodb_random_read_ahead=1

innodb_read_io_threads=48

innodb_thread_concurrency=0

innodb_use_native_aio=1

innodb_write_io_threads=48

join_buffer_size=32M

key_buffer_size=256M

log-bin=mysql-bin

log-error=/var/log/mysql-error.log

log_output=FILE

log_slave_updates=1

max_allowed_packet=128M

max_connect_errors=10000000

max_connections=1000

max_heap_table_size=64M

max_tmp_tables=1024

myisam_recover=FORCE,BACKUP

myisam_sort_buffer_size=128M

net_buffer_length=1M

open_files_limit=65535

pid-file=/data/mysql/data/mysql.pid

port=3306

query_cache_size=0

query_cache_type=0

report_host=192.168.201.11

report_port=3306

read_buffer_size=8388608

read_rnd_buffer_size=4M

relay-log=mysql-relay-bin

log_warnings=9

sync_binlog=1000

rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_timeout=1000

server-id=11

skip-external-locking

skip-name-resolve

socket=/tmp/mysql.sock

sort_buffer_size=16M

table_definition_cache=4096

transaction_isolation=read-committed

table_open_cache=16384

thread_cache_size=2048

thread_stack=1048576

tmp_table_size=64M

slave_net_timeout=30

master-info-repository=TABLE

relay-log-info-repository=TABLE

sync-master-info=1

slave-parallel-workers=4

binlog-checksum=CRC32

master-verify-checksum=1

slave-sql-verify-checksum=1

binlog-rows-query-log_events=1

thread_handling=pool-of-threads

thread_pool_high_prio_mode=statements

thread_pool_max_threads=100000

thread_pool_size=48

thread_pool_oversubscribe=10

thread_pool_stall_limit=300

innodb_monitor_enable = '%'

performance_schema = ON

performance_schema_instrument = '%=on'

三、性能测试

3.1基准测试

利用sysbench工具进行数据库oltp测试,得出测试结论如下:

OLTP test statistics:

queries performed:

read:                           481348

write:                          137528

other:                          68764

total:                          687640

transactions:                       34382 (572.21 per sec.)

read/write requests:                618876 (10299.77 per sec.)

other operations:                   68764 (1144.42 per sec.)

ignored errors:                     0     (0.00 per sec.)

reconnects:                         0     (0.00 per sec.)

General statistics:

total time:                         60.0864s

total number of events:             34382

total time taken by event execution: 3842.8699s

response time:

min:                                23.10ms

avg:                               111.77ms

max:                               323.79ms

approx. 95 percentile:            166.95ms

Threads fairness:

events (avg/stddev):          537.2188/9.58

execution time (avg/stddev):  60.0448/0.02

可知:

tps:572.21 per sec

qps:10299.77 per sec.

3.2优化后测试

最好的测试结论如下:

OLTP test statistics:

queries performed:

read:                           7265944

write:                          2075984

other:                          1037992

total:                          10379920

transactions:                       518996 (864.91 per sec.)

read/write requests:                9341928 (15568.43 per sec.)

other operations:                   1037992 (1729.83 per sec.)

ignored errors:                     0     (0.00 per sec.)

reconnects:                         0     (0.00 per sec.)

General statistics:

total time:                         600.0560s

total number of events:             518996

total time taken by event execution: 38354.8485s

response time:

min:                                 6.49ms

avg:                                73.90ms

max:                               252.93ms

approx. 95 percentile:            118.04ms

Threads fairness:

events (avg/stddev):          8109.3125/1090.72

execution time (avg/stddev):  599.2945/0.45

可知:

tps:864.91 per sec

qps:15568.43 per sec

3.3SQL测试

采用单个SQL语句进行测试,性能也有很大的提升。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻标题:mysql数据库环境优化-创新互联
网页链接:http://ybzwz.com/article/dhgihp.html