每张表数据最好不要超过2000W 条数据
超过之后分表存储,分库存储
一个实例oracle一时打开一个数据库
一个实例mysql一时打开多个数据库
按对数据调优影响从高到低依次为:
数据库的设计与规划
数据的引用(sql)
mysql服务优化,内存磁盘的使用
操作系统优化
升级硬件设备
数据库的设计与规划:
事务处理用innodb引擎。
非事务处理用myIsam
mysql版本的影响。
尽量采取优化算法
建立合适的索引
插入,修改,删除数据的时候,索引是最大的瓶颈。
所以如果要导入数据的时候就删除索引。
所用exists少用in
尽量避免使用is null,所以经常不要允许为null,设置默认值。
mysql内存配置:
my.ini
query_cache_size:
table_case:
磁盘io规划:
raid技术:
-raid 0+1
raid 0
raid 5
swap分区的使用
-最好使用单独的raid0 分区
磁盘分区
--磁盘读取分流
数据读写特别大库文件放到多个磁盘上。
一个库放在一个分区上。
操作系统的优化
优化网络:
linu 采用bonding技术
优化系统内核:
--优化系统tcp连接
--优化系统打开文件的最大限制
关闭不必要的服务
第二章优化mysql服务
show status;
show variables;
show processlist;
show warnings;
show errors;
启动mysql慢速查询日志:
log-slow-queries = /new/log.log
long-query-time=5
log-queries-not-using-indexes mysql4.1以后的版本有效
通过mysqldumpslow命令制定日志文件的路径进行查看
对查询进行缓存
缓存的大小不是越大越好,也不是越少越好。适当最好。
查询命中率越高越好
对mysql资源进行强制配置:
max_connections //最大连接数 一般1000
wait_timeout //空闲多长时间后断开链接
max_connect_errors //最大的错误链接数 一般设置为2001
表的告诉缓存:
table_cache //缓存表的数量
open_tables //已经打开表的数量
opened_tables //需要打开表的数量 越大 表示 table_cache 设置的小了
加size表示的空间大小,不加的表示个数
thread_cache
threads_created //线程的创建数量,越大表示thread_cache 设置的小了。
关键字缓冲区
key_buffer_size
key_read_requests //请求的总数
key_reads //命中磁盘的请求个数
key_read_requests / key_reads = 100/1 表示需要增加key_buffer_zise
key_read_requests / key_reads = 1000/1 表示比key_buffer_size大小比较合适
命中率: (key_read_requests - key_reads) / key_read_requests
临时表的大小,内存区域,用于存放临时表,不是程序员操作的,
是mysql引擎自动的需要创建的。
tmp_table_size
created_tmp_table //创建tmp表的数量
created_temp_disk_table //创建tmp磁盘表的数量,数量不断增加,表示tmp_table_size
查询的两种方式
select_scan
select_range
排序缓冲区
sort_buffer_size
sort_range
sort_rows
sort_merge_passes //次数,磁盘内容合并次数,越大,表示sort_buffer_size需要增加
sort_buffer_size也不是越大越好。
mysql调优工具。
mytop
http://jeremy.zawodny.com/mysql/mytop
mytop -u username -p passwor
mysqlard
mysqlreport
mysqlslap 是myslq官方提供的压力测试工具 mysql 5.1以后。
phpmyadmin
日常维护小技能
安全是第一位。之后再讨论效率
myisam备份方法
mysqlhotcopy:拷贝数据文件到制定的目录,先锁着,再解锁。不适合很繁忙的时候备份
数据不会丢,很方便
mysqldump: 先锁着,通过sql语句方式,生成sql语句。
最好每张表每张sql,不要一个库一个sql,否则会很大的sql文件
innodb备份文件
mysqldump
innodb hot backup 非免费。
二进制恢复2
二进制日志 binlog
-mysqlbinlog
直接备份数据文件
flush tables with read lock 直接拷贝数据文件。
已有 0 人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐