mysql数据优化思路

后台开发,不了解一丢丢数据库怎么能行。少不了得了解一点优化知识吧,要不别人嫌你的慢的要死怎么办。至少得找到能够下手的点。

遇到问题应该如何去思考。

优化思路,从这些点切入。

1.数据库设计

2.sql语句优化

3.数据库参数配置

4.恰当的硬件资源和操作系统

那么就分开从上面这些点简单说一哈。

数据库设计

怎么设计?遵循三范式。

什么是三范式?

1.字段不可分。

2.有主键,非主键字段依赖主键。

3.非主键字段不能互相依赖。

三范式言简意赅,没啥说的。

还有,选用合适的数据类型。这个没必要说了。经验积累。

选择合适的引擎:

MyISAM:默认的Mysql存储引擎。插入读写多,更新删除少,并对事务的完整性要求的不是很高。访问快。

InnoDB:提交了具有提交、回滚、崩溃恢复能力的事务安全。写的效率差一些、而且占用更多磁盘空间。

sql语句优化

这个就是重点了。这部分也是常常做为后端开发需要优化的一个点。这就是所谓的优化慢SQL部分。

首先,慢SQL,什么是慢呢,查多久算慢,1s还是10s。

机器肯定不知道,你得告诉它。

show variables like 'long_query_time';

set long_query_time=2; 

show那个参数看定义慢查询的时间是多少,默认10s,好,改,两秒你就是慢。

以后超过两秒后就是慢SQL了。去哪找?它默认不给你记录。得自己开。

bin\mysqld.exe - -safe-mode  - -slow-query-log(开启)

开!版本不一样,开的方式也不一样,简单查一下就出来了。

这样的话,要是超过2s的话,这些SQL都给你记下来了。

默认目录是data中的host-name-slow.log。 忘记了话,根据命令查一下。

 slow_query_log //是否打开日志记录

slow_query_log_file //日志存放位置

SQL记下来了,那怎么办呢。当然是分析它

如何分析?使用explain命令分析它,分析出许多字段什么意思。

  select_type:表示查询的类型。

  table:输出结果集的表

  type:表示表的连接类型

  possible_keys:表示查询时,可能使用的索引

  type:扫描类型

  key:表示实际使用的索引

  key_len:索引字段的长度

  rows:扫描出的行数(估算的行数)

  Extra:执行情况的描述和说明

从这个分析结果就能看出来,比如:原来我的SQL没用到索引!!!

查看索引使用情况:

show status LIKE 'Handler_read%'    

Handler_read_key越高表示使用索引查询到的次数

Handler_read_rnd越高说明效率越低

分析完如何解决优化呢?留个入口,单独写索引(这里)。

数据库参数配置

1.内存,一般用InnoDB,所以两个调大一些

innodb_additional_mem_pool_size = 64M

innodb_buffer_pool_size =1G

2.修改存储引擎和最大连接数

恰当的硬件资源和操作系统

这。。我也不知道选啥。

没写多少,大概思路是这样。

你可能感兴趣的:(mysql数据优化思路)