sql优化

    一、sql优化首先想到的就是sql语句的优化,比如

        1、select、insert等关键字大写

        2、查询语句的时候如果不需要查询所有那么就不要用*来查

        3、如果查询数据是从第0条开始,那么尽量写成limilt x

        4、如果需要模糊查询,那么尽量不要使用前置%,可以用函数代替,比如locate,instr,position代替,并且需要注意的是参数顺序,如果顺序不对是不会出现数据的

        

        locate('str'--模糊查询的字段,column--需要模糊查询的列,number--从第几个位置开始查询)

        

        我们可以从下面的查询中看出,当我们写上number的时候,id为10的数据是消失了的

    

        instr(column,'str')

        

        position('str' in column)

        

        还有一种比较特殊的是find_in_set(str--必须是列中含有完整的数据,并于其他数据用‘,’分隔,column--必须是有多个用‘,隔开的数据’)当然如果只有一条数据也是可以的,但那就不是模糊查询了

         

        

        可以看出只查询'老'是完全查询不出来的,而且需要注意的是,里面存储的','必须是英文状态下的逗号,不然也是查不出来的

 

        5、尽量少使用in可以使用exists

        6、······太多了,暂时先不写了,什么遵循三范式或者反范式建表,什么驼峰命名的

    二、其次就是去看索引了,首先就是看数据库主要是用来做什么的,如果是用于大量的数据查询,那么可能使用MyIsam会更好,而且MyIsam是使用的非聚集索引,他的索引存储的是本身以及主键,并没有数据,数据,索引是分开存放,那么在查询数据量的时候是非常快的,如果是增删改比较多的话,用Innodb是比较好的

        分析完这个以后就可以继续了

        因为我主要还是用的Innodb,所以我就说说Innodb,我们可以用explain去查看我们的sql语句有没有使用到索引,Innodb如何使用索引以及索引的种类,当我们将索引优化到了range级别之上的时候,就到了及格线了,我们还可以使用force index(field)强制索引或者ignore index(field)忽略索引

    三、这个时候就可以开始去看你的代码的冗余程度,将代码合并,减少与数据库的连接次数,如果需要大量查询那么就可以考虑使用redis、memcach等缓存数据库了,期间的各种问题就需要大量的实践去总结了,但是搭建什么的博主是完全没有问题的,有需要可以问我哦

    四、然后这个时候就得考虑jvm的调优了,因为电脑运行我们的进程实际上就是在占用jvm的内存进行数据处理,那么我们肯定要尽量的减少优化我们的内存占用

    jvm中包括了五个分区:

        计数器:计数器主要是用来存储我们当前进程中当前线程的运行行数

        方法区:方法区存储的是new出来的方法、常量、字段等等的数据,这个相当于永久代

        堆:分为Eden区和s区,s区包括s0和s1区,也称为from和to区,垃圾回收主要就是回收的这,里面包括了所有的对象

        本地方法栈:当使用了volatile修饰的时候会用到本地方法栈

        虚拟机栈:当中存储的有局部变量表,操作数栈,动态链接,出口

    jvm优化主要的有两点:参数优化,回收算法优化···太晚了,明天补充

        首先就是参数优化,我们在平时的项目中可以添加一些普通的参数来代替服务器上的一些参数,比如

        

        这样你就可以进行jvm的优化测试,我就不给大家演示了,通过这我们可以进行参数调优,之后可以通过Jprofile查看你的内存占用情况,就可以对对应的代码进行优化了,JProfile我们可以直接在Idea中下载插件并且安装

        

        之后会出现一个指南针类似的图标,我们就可以使用了

        

        当我们在这将jvm优化好之后,就可以对应的配置服务器上的信息了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值