mysql产品优化方案_mysql的优化方案

简介

在本文中,主要写一下自己所查阅和理解的mysql优化方案.

我的理解是数据库的优化对于我们'非专业'人员,mysql的优化也没那么复杂了,真的要玩转mysql的话,肯定得需要很多年的经验了.

参考链接:

优化方案

1.搜索引擎的优化

mysql搜索引擎用的比较多的有以下三中

InnoDB

MEMORY

MyISAM

InnoDB的适用情况:InnoDB有处理事务的功能,对于需要处理大量事务的数据库,InnoDB是比较合适的.

MEMORY的适用情况:一个字快!MEMORY是要把数据直接干到内存中,处理速度很快,但是,当服务器重启或者宕机数据就没了呢.所以,这个是适用临时数据.

MyISAM的适用情况:速度快,不支持事务.适用于处理数据量大且不用大量处理事务的数据库.

2.mysql添加索引

什么情况下适合添加索引

该字段数据量庞大;

该字段很少的DML操作(由于索引也需要维护,DML操作多的话,也影响检索效率);

该字段经常出现在where条件中;

只要列中含有NULL值,就最好不要在此例设置索引,复合索引如果有NULL值,此列在使用时也不会使用索引

尽量使用短索引,如果可以,应该制定一个前缀长度

对于经常在where子句使用的列,最好设置索引,这样会加快查找速度

对于有多个列where或者order by子句的,应该建立复合索引

对于like语句,以%或者‘-’开头的不会使用索引,以%结尾会使用索引

尽量不要在列上进行运算(函数操作和表达式操作)

尽量不要使用not in和<>操作

注意:实际开发中会根据项目需求等综合因素来做调整,添加索引并不能保证一定能够提升检索效率,索引添加不当也有可能会导致效率降低。

3.sql语句的优化

sql语句的优化,主要一点就是,尽量避免全文搜索,就是我要找个东西,我不能在那么多的数据中找到我想要的数据.最好就是,我可以在数据库中搜索最小的范围得到我想要的数据.

查询时,能不要*就不用*,尽量写全字段名

大部分情况连接效率远大于子查询

多使用explain和profile分析查询语句

查看慢查询日志,找出执行时间长的sql语句优化

多表连接时,尽量小表驱动大表,即小表 join 大表

在千万级分页时使用limit

对于经常使用的查询,可以开启缓存

其实还有很多的,主要把握"查最少的信息,获得我所需要的内容"这个核心就行了.

4.表的优化

其实就一点:分块!将数据分块存放.

表的字段尽可能用NOT NULL

字段长度固定的表查询会更快

把数据库的大表按时间或一些标志分成小表

将表分区

比如一个城市里有很多的区,每个区里又有很多的街道小区,一个城市就显得很规矩.如果所有的商店写字楼居民楼都随意布置,那这个城市就乱的一团糟了.

总结

优化数据库有很多途径.让处理数据的效率越高越好,就酱.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数据爬虫代码_python如何示例爬虫代码

python爬虫代码示例的方法&#xff1a;首先获取浏览器信息&#xff0c;并使用urlencode生成post数据&#xff1b;然后安装pymysql&#xff0c;并存储数据到MySQL即可。python爬虫代码示例的方法&#xff1a;1、urllib和BeautifuSoup获取浏览器信息from urllib import requestre…

kali linux查看网卡_CentOS7.6安装无线网卡驱动|Linux如何安装网卡驱动|Linux如何让配置网卡...

此前提到&#xff0c;Thinkpad E490安装CentOS7.6遇到内核崩溃的问题&#xff0c;解决之后&#xff0c;安装CentOS7.6操作系统成功。安装时发现&#xff0c;系统能够检测到有线网卡&#xff0c;但无法检测到无线网卡&#xff0c;说明CentOS7.6对此无线网卡的支持不足&#xff0…

python本地编译器_Python学习札记(0)——Python开发环境搭载及推荐几款Python编译器...

1、进入网址&#xff1a;http://www.python.org/download/#id102、选择版本&#xff1a;其中有两个Python版本&#xff0c;一个为3.0以上版本&#xff0c;一个为2.7版本&#xff0c;主要区别有一些特定的软件只支持2.7版本其中的两个windows版本为&#xff1a;Python 3.3.3 Win…

如何将mysql的数据库渲染到页面_vue.js实现数据库的JSON数据输出渲染到html页面功能示例...

本文实例讲述了vue.js实现数据库的JSON数据输出渲染到html页面功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;1、首先通过json.php把数据库给输出为json格式的数据[{"id":1,"resname":"百度","resimg":"http://www…

java模块_Java 9 揭秘(2. 模块化系统)

文 by / 林本托Tips做一个终身学习的人。在此章节中&#xff0c;主要介绍以下内容&#xff1a;在JDK 9之前Java源代码用于编写&#xff0c;打包和部署的方式以及该方法的潜在问题JDK 9中有哪些模块如何声明模块及其依赖关系如何封装模块什么是模块路径什么是可观察的模块如何打…

java swing滚动面板_java swing 之 JScrollPane(滚动面板)的使用

/*** java swing 之JScrollPane面板* 在设置界面时&#xff0c;可能会遇到在一个较小的容器窗体中显示一个较大部分的内容&#xff0c;这时可以使用* JScrollPane面板&#xff0c;JscrollPane面板是带滚动条的面板&#xff0c;也是一种容器&#xff0c;但是常用于布置单个* 控件…

java reader_Java之字符输入流,Reader类的简单介绍

各位小伙伴们大家好&#xff0c;在之前的文章中&#xff0c;小编介绍了Java之文件复制的简单介绍&#xff0c;多是一些关于字节的知识&#xff0c;这次小编要介绍的是字符输入流Reader类&#xff0c;具体如下&#xff1a;java.io.Reader:字符输入流&#xff0c;是字符输入流的最…

java object 转byte_Java将对象Object转换成Byte字节数组

Java将对象Object转换成Byte字节数组的代码如下&#xff1a;/*** from www.ityuan.com* Description: Java将对象Object转换成Byte字节数组*/public class ObjectToByteTester implements Serializable {private static final long serialVersionUID 932872837809539736L;publ…

java redis brpop_Redis实战 | 5种Redis数据类型详解

我们知道Redis是目前非常主流的KV数据库&#xff0c;它因高性能的读写能力而著称&#xff0c;其实还有另外一个优势&#xff0c;就是Redis提供了更加丰富的数据类型&#xff0c;这使得Redis有着更加广泛的使用场景。那Redis提供给用户的有哪些数据类型呢&#xff1f;主要有&…

java二分查找递归_java学习之—递归实现二分查找法

/*** 递归实现二分查找法* Create by Administrator* 2018/6/21 0021* 上午 11:25**/class OrdArray{private long[] a;private int nElems;public OrdArray(int max){this.a new long[max];this.nElems 0;}public int size(){return nElems;}public long find(long searchKe…

java 抽象类对象_Java基础___面向对象__抽象类

抽象类在面向对象的概念中&#xff0c;所以的对象都是通过类来描绘的&#xff0c;但是反过来&#xff0c;并不是多余类都是用来描绘对象的&#xff0c;如果一个类中没有包含足够的信息来描绘一个具体的对象&#xff0c;这样的类就是抽象类。抽象类除了不能实例化对象之外&#…

java 对象克隆_JAVA对象克隆

1> 为了获取对象的一份拷贝&#xff0c;我们可以利用Object类的clone()方法。2> 在派生类中覆盖基类的clone()&#xff0c;并声明为public。3> 在派生类的clone()方法中&#xff0c;调用super.clone()。4> 在派生类中实现Cloneable接口。4> 没有抽象方法的接口叫…

产生随机数java_java产生随机数的几种方式

一.在j2se里我们可以使用Math.random()方法来产生一个随机数&#xff0c;这个产生的随机数是0-1之间的一个double&#xff0c;我们可以把他乘以一定的数&#xff0c;比如说乘以100&#xff0c;他就是个100以内的随机&#xff0c;这个在j2me中没有。二.在java.util这个包里面提供…

java 线程 单例_多线程单例模式

多线程单例模式原文&#xff1a;https://blog.csdn.net/u011726005/article/details/823565381. 饿汉模式使用饿汉模式实现单例是十分简单的&#xff0c;并且有效避免了线程安全问题&#xff0c;因为将该单例对象定义为static变量&#xff0c;程序启动即将其构造完成了。代码实…

java 中文 编译_java编译带中文是显示乱码的错误

FirstJava.java:3: 错误: 编码GBK的不可映射字符System.out.println("娆㈣繋瀛︿範Java绋嬪簭锛?")锛?^FirstJava.java:3: 错误: 编码GBK的不可映射字符System.out.println("娆㈣繋瀛︿範Java绋嬪簭锛?")锛?^FirstJava.java:4: 错误: 编码GBK的不可映射…

java 中间件 pdf_Java中间件技术及其应用开发 PDF扫描版[51MB]

Java中间件技术及其应用开发 内容提要&#xff1a;本书使用丰富的案例介绍了使用Java技术进行中间件编程的方法及技巧&#xff0c;包括JSP、JavaServlet、JDBC数据库开发、使用JavaMail开发邮件应用程序、RMI(远程方法调用)、EnterpriseJavaBeans开发、使用CORBA以及JavaIDL进行…

java千万用户实现实时排名_想知道谁是你的最佳用户?基于Redis实现排行榜周期榜与最近N期榜...

本文由云社区发表前言业务已基于Redis实现了一个高可用的排行榜服务&#xff0c;长期以来相安无事。有一天&#xff0c;产品说&#xff1a;我要一个按周排名的排行榜&#xff0c;以反映本周内用户的活跃情况。于是周榜(按周重置更新的榜单)诞生了。为了满足产品多变的需求&…

java循环左一_左旋转字符串(Java)-循环Index方式

左旋转字符串(Java)-循环Index方式题目要求​ 汇编语言中有一种移位指令叫做循环左移(ROL)&#xff0c;现在有个简单的任务&#xff0c;就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S&#xff0c;请你把其循环左移K位后的序列输出。例如&#xff0c;字符序列S”…

java jna jni_JNA, Java Native开发利器

下面的文章由转载而来&#xff0c;java与c的调用基本思路是这样子&#xff0c;但是结合我的使用经验&#xff0c;在使用jna和jnative的时候需要考虑到jdk的版本&#xff0c;jnative跟jdk1.4的结合可能会有点问题&#xff0c;因为我之前选的是jnative&#xff0c;而我们的jdk版本…

java枚举类型高级用法_枚举及其高级用法

Enum源码&#xff1a;Enum.java/** Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.*/packagejava.lang;importjava.io.Serializable;importjava.io.IOException;importja…