mysql优化方式

在面试以及实际工作中必不可少的话题。mysql优化是一项综合性的过程,并不是优化一种性能就能提高很多,基本是这里优化一些,那里优化一些。性能就提起来了。个人理解,勿喷

优化的方面可以从以下方面着手;

a.表的设计,sql语句,满足三范式,一般不满足三范式的数据库不能叫做关系型数据库

       三范式:

       1NF:字段不可分; 
       2NF:有主键,非主键字段依赖主键; 
       3NF:非主键字段不能相互依赖; 

       解释: 
       1NF:原子性 字段不可再分,否则就不是关系数据库; 
       2NF:唯一性 一个表只说明一个事物; 
       3NF:每列都与主键有直接关系,不存在传递依赖;

1NF是关系型数据库中的最基本要求,就是要求记录的属性是原子性,不可分,就是属性不能分,这是关系型数据库的基本          要求,不满足这个就不能叫关系型数据库了

2NF是不能有部分依赖,部分依赖的前提条件是有组合主键,就是每条记录是需要一个主键的,这个主键可以是一个单独的属性,但也可以是组合主键,就是由记录的多个属性来唯一确定一条记录,那么只要出现了组合主键就可以产生部分依赖,部分依赖是组合主键出现的前提下,剩余的属性,不完全依赖于组合主键,也是部分依赖组合主键,比如该表的N条记录中由组合主键中的一条或者几条就可以确定剩余属性的属性,那么就可以说产生部分依赖,而在实际开发中,一般不采用组合主键,而是自己增加一个字段id自增长,作为主键,这样的单属性主键是不会产生部分依赖的!

3NF的理解:不能出现传递依赖:就是主键,非主键1,非主键2三者之间不能出现传递依赖关系,如果出现由主键可以推出非主键1,然后由非主键1可以推出非主键2,那么主键与非主键2就产生了传递依赖关系,这就不满足三范式,通俗来讲,在 一个表的,当然以一条记录为单位,主键和非主键之间可以产生父子关系,但是非主键之间是不能出现父子关系 的

b.索引

     索引又分多钟索引,普通索引、全文索引、唯一索引、主键索引(效率最快)、还有很多人口中所说的复合索引

c.分表(水平分割、垂直分割)

d.读写分离(多个mysql用来读,即查询等),少数mysql用来写(update/delete/add)

e.存储过程其实也可以列为mysql性能优化之一,都知道mysql数据库其实就是一个文件系统,里面还有dbms(数据库管理系统),在一条sql执行的时候其实是要通过dbms进行编译的,而这个编译是很费时间的,dbms从mysql数据库取数据的,那我们就可以在需要常用的大数据量下sql下预先在mysql的dbms编译好,在第一次查询的时候也会把数据缓存起来的,所以我们在第二次操作的时候会比第一次要快的。这就是存储过程

f.对mysql本身配置优化,比如并发数(一般网站在1000左右等)mysql缓存大小等以适当提高速度,但并不是越大就越好,根据硬件配置来适配,毕竟像并发数等这些东西也是需要线程进程维护的,吃内存等,mysql配置太高,反而容易导致性能降低

g.除了以上的,也可以对服务器硬件的配置进行提升,上诉的优化做得很好,硬件配置太低还是不能太大的提高mysql的性能

 

以上就是个人理解以及认为可以对mysql优化着手的几个方面,后面会着重介绍其中比较重要的一些优化手段

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值