【发布时间】:2015-05-16 01:57:24
【问题描述】:
我们有一个专用的数据库服务器 (MariaDB 5.5.31) 托管我们的 java 应用程序使用的数据库(通过休眠从另一台服务器访问数据库)。虽然我们的数据库本身使用了大约 12gb 的 RAM,但操作系统(CentOS 6.4)另外缓存了大约 25gb。
您能给我任何建议吗,我们可以如何影响这种行为?
虽然我们 100 个表中的大多数表的条目少于 1000 个,但我们也有一些表的条目数超过 1000 万。这些表会经历大量的读写操作。
这些是我们的数据库设置:
[server]
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server = utf8
collation-server=utf8_general_ci
skip-external-locking
back_log = 50
max_connections = 100
max_connect_errors = 10
table_open_cache = 2048
max_allowed_packet = 16M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 16M
thread_cache_size = 8
thread_concurrency = 8
query_cache_size = 128M
query_cache_limit = 2M
thread_stack = 240K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
binlog_cache_size = 1M
log-bin=mysql-bin
binlog_format=mixed
expire_logs_days = 2
#*** MyISAM Specific options
key_buffer_size = 384M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
# *** INNODB Specific options ***
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 10G
innodb_data_home_dir = /var/lib/mysql
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 8M
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
[embedded]
[mysqld-5.5]
[mariadb]
[mariadb-5.5]
【问题讨论】:
-
您能分享一下存储超过百万条记录的表的信息吗?那些是 Innodb 还是 ISAM?什么是与时间相关的字段,其中包含哪些类型的数据?那里有索引吗?表格统计完成了吗?
标签: mysql centos mariadb my.cnf