Archive for the ‘数据库性能优化方案’ Category

前些阵子做了一个小程序,服务器上安装的是MySQL5.0,当时放在局域网内进行测试时,数据库的访问速度还是很快。
但当服务器放到外网后,数据库的访问速度就变得非常慢。
后来在网上发现解决方法,my.ini里面添加
[mysqld]
skip-name-resolve

这样速度就快了!
skip-name-resolve含义:选项就能禁用DNS解析,连接速度会快很多。

试验一:
table_cache=512或1024
innodb_additional_mem_pool_size=2M
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=1M
innodb_thread_concurrency=8       你的服务器CPU有几个就设置为几,默认为8
key_buffer_size=128M
tmp_table_size=128M
read_buffer_size=64K或128K
read_rnd_buffer_size=256K
sort_buffer_size=512K
max_connections=1024

试验二:
table_cache=512或1024
innodb_additional_mem_pool_size=8M
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=4M
innodb_thread_concurrency=8
key_buffer_size=128M
tmp_table_size=128M
read_buffer_size=4M
read_rnd_buffer_size=16M
sort_buffer_size=32M
max_connections=1024

一般:
table_cache=512
innodb_additional_mem_pool_size=8M
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=4M
innodb_thread_concurrency=8
key_buffer_size=128M
tmp_table_size=128M
read_buffer_size=4M
read_rnd_buffer_size=16M
sort_buffer_size=32M
max_connections=1024

经过测试.没有特殊情况,最好还是用默认的.

2G内存,针对站多,抗压型的设置,最佳:
table_cache=1024 物理内存越大,设置就越大.默认为2402,调到512-1024最佳
innodb_additional_mem_pool_size=4M   默认为2M
innodb_flush_log_at_trx_commit=1(设置为0就是等到innodb_log_buffer_size列队满后再统一储存,默认为1)
innodb_log_buffer_size=2M             默认为1M
innodb_thread_concurrency=8       你的服务器CPU有几个就设置为几,建议用默认一般为8
key_buffer_size=256M                       默认为218       调到128最佳
tmp_table_size=64M                      默认为16M        调到64-256最挂
read_buffer_size=4M                       默认为64K
read_rnd_buffer_size=16M              默认为256K
sort_buffer_size=32M                   默认为256K
max_connections=1024                 默认为1210
thread_cache_size=120             默认为60
query_cache_size=64M

以下是我所作的配置文件
–>
# MySQL Server Instance Configuration File

[client]
port=9011

[mysql]
default-character-set=gbk

[mysqld]
port=9011
basedir=”C:/Program Files/MySQL/MySQL Server 5.5/”
datadir=”C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/”
character-set-server=gbk
default-storage-engine=INNODB
sql-mode=”NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
max_connections=1024
query_cache_size=64M
table_cache=512
tmp_table_size=64M
thread_cache_size=120
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=205M
key_buffer_size=256M
read_buffer_size=64K
read_rnd_buffer_size=4M
sort_buffer_size=32M
innodb_additional_mem_pool_size=8M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=4M
innodb_buffer_pool_size=256M
innodb_log_file_size=170M
innodb_thread_concurrency=8
<–

经测试占用服务器内存60-80MB,还算比较合理,性能有明显提升

MySQL 3.22限制的表大小为4GB。由于在MySQL 3.23中使用了MyISAM存储引擎,最大表尺寸增加到了65536TB(2567 – 1字节)。由于允许的表尺寸更大,MySQL数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由MySQL内部限制决定的。

InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建。这样,表的大小就能超过单独文件的最大容量。表空间可包括原始磁盘分区,从而使得很大的表成为可能。表空间的最大容量为64TB。

在下面的表格中,列出了一些关于操作系统文件大小限制的示例。这仅是初步指南,并不是最终的。要想了解最新信息,请参阅关于操作系统的文档。

操作系统 文件大小限制
Linux 2.2-Intel 32-bit 2GB (LFS: 4GB)
Linux 2.4+ (using ext3 filesystem) 4TB
Solaris 9/10 16TB
NetWare w/NSS filesystem 8TB
win32 w/ FAT/FAT32 2GB/4GB
win32 w/ NTFS 2TB(可能更大)
MacOS X w/ HFS+ 2TB

在Linux 2.2平台下,通过使用对ext2文件系统的大文件支持(LFS)补丁,可以获得超过2GB的MyISAM表。在Linux 2.4平台下,存在针对ReiserFS的补丁,可支持大文件(高达2TB)。目前发布的大多数Linux版本均基于2.4内核,包含所有所需的LFS补 丁。使用JFS和XFS,petabyte(千兆兆)和更大的文件也能在Linux上实现。然而,最大可用的文件容量仍取决于多项因素,其中之一就是用于 存储MySQL表的文件系统。

http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/introduction.html