mysql性能调优--总括

每张表数据最好不要超过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  直接拷贝数据文件。

  • 本文来自:Linux学习教程网


你可能感兴趣的:(oracle,数据库,内存配置,优化网络,最大的)