广告
返回顶部
首页 > 资讯 > 数据库 >怎么优化Mysql数据库
  • 336
分享到

怎么优化Mysql数据库

2024-04-02 19:04:59 336人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关怎么优化Mysql数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。学无止境,数据库优化分为方方面面,在这里,我进行了比较全的总结,分享给正

这篇文章将为大家详细讲解有关怎么优化Mysql数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

学无止境,数据库优化分为方方面面,在这里,我进行了比较全的总结,分享给正在工作或者学习的同行们。

数据库的优化分为以下七大方面:

1、表的设计要符合三范式(适当的反三范式也可以);

2、添加适当的索引,索引对查询速度影响很大,必须添加索引(主键索引,唯一索引,普通索引,全文索引);

3、添加适当存储过程,触发器,事务等;

4、读写分离(主从数据库);

5、对sql语句的一些优化,(查询执行速度比较慢的sql语句);

6、分表分区(分表:把一张大表分成多张表。分区:把一张表里面的分配到不同的区域存储);

7、对mysql服务器硬件的升级操作。

接下来我将具体讲解优化的方式。

一、三范式

第一范式:

原子性:表里面的字段不能再分割,只要是关系型数据库,就天然的自动满足第一范式

关系型数据库(有行和列的概念):mysql、SQL Serveroracle、db2、infomix、sybase、postgresql,在设计时,先有库->表->字段->具体记录(内容):在存储数据时,要设计字段。

非关系型数据库(泛指NoSQL数据库):memcache、Redis、momGodb等。

第二范式:

一个表中没有完全相同的记录,通过一个主键即能解决

第三范式:

表中不能存储冗余数据

反三范式设计:

相册表
ID相册名称相册浏览量
1生活100
2工作照100
照片表
ID照片名称相册ID浏览量
1我的小狗149
2我的小猫151
3我的同事2100

如果要算一个相册的浏览量,我们可以在相册表中添加相册浏览量字段,浏览照片的时候同时更新相册浏览量。

二、开启慢查询

Mysql慢查询默认是关闭的,默认记录超过10秒的sql语句。

1.查看慢查询记录时间:

show variables like ‘long_query_time’;

2.修改慢查询时间:

set long_query_time=2;

3.通过如下的一个函数来进行测试

benchmark(count,expr)   函数可以测试执行count次expr操作需要的时间

三、建立索引

1、主键索引的特点:

(1)一个表中最多只有一个主键索引

(2)一个主键索引可以指向多个列

(3)主键索引的列,不能有重复的值,也不能有null

(4)主键索引的效率高。

2、唯一索引的特点:

(1)一个表中可以有多个唯一索引

(2)一个唯一索引可以指向多个列,

(3)如果在唯一索引上,没有指定not null,则该列可以为空,同时可以有多个null,

(4)唯一索引的效率较高。

3、普通索引:

使用普通索引主要是提高查询效率

4、全文索引

mysql自带的全文索引mysql5.5不支持中文,支持英文,同时要求表的存储引擎是myisam。如果希望支持中文,有两个方案,

(1)使用aphinx中文版coreseek (来替代全文索引)

(2)插件mysqlcft。

添加索引主要的问题:

(1)较频繁的作为查询条件字段应该创建索引,唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件,更新非常频繁的字段不适合创建索引

(2)不会出现在WHERE子句中字段不该创建索,索引是由代价的,虽然是查询速度提高了,但是,会影响增该删的效率。而且索引文件会占用空间。

四、分表、分区

垂直分表(内容主表+附加表):

内容主表:存储各种数据的一些公共信息,比如数据的名称,添加时间等,

可以使用多个附加表,附加表存储一些数据的独特的信息。

主要原因:是内容主表里面的数据访问比较频繁。

特点:表结构不同

水平分表:

将表数据存在不同的表中

特点:表结构相同

分区:

就是把一个表存储到磁盘不同区域,仍然是一张表。

基本的概念:

(1)Range(范围)–这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区。

(2)List(预定义列表)–这种模式允许系统通过预定义的列表的值来对数据进行分割。

(3)Hash(哈希)–这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。

(4)Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。

分区表的限制:

(1)只能对数据表的整型列进行分区,或者数据列可以通过分区函数转化成整型列。

(2)最大分区数目不能超过1024。

(3)如果含有唯一索引或者主键,则分区列必须包含在所有的唯一索引或者主键在内。

(4)按日期进行分区很非常适合,因为很多日期函数可以用。但是对于字符串来说合适的分区函数不太多。

五、并发处理的锁机制

机制:在执行时,只有一个用户获得锁,其他用户处于阻塞状态,需要等待解锁。

mysql 的锁有以下几种形式:

表级锁:开销小,加锁快,发生锁冲突的概率最高,并发度最低。myisam引擎属于这种类型。

行级锁:开销大,加锁慢,发生锁冲突的概率最低,并发度也最高。innodb属于这种类型。

表锁的演示:

1.对myisam表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其他进程的操作。

2.表添加读锁后,其他进程对该表只能查询操作,修改时会被阻塞。

3.当前进程,能够执行查询操作,不能执行修改操作。不能对没有锁定的表进行操作。

4.锁表的语法:

lock table 表名 read|write

5.也可以锁定多个表

6.对myisam表的写操作(加写锁),会阻塞其他进程对锁定表的任何操作,不能读写,

7.表加写锁后,则只有当前进程对锁定的表,可以执行任何操作。其他进程的操作会被阻塞。

行锁的演示:

1.innodb存储引擎是通过给索引上的索引项加锁来实现的,这就意味着:只有通过索引条件检索数据,innodb才会使用行级锁,否则,innodb使用表锁。

2.开启行锁后,当前进程在针对某条记录执行操作时,其他进程不能操作和当前进程相同id的记录。

PHP里面有文件锁,在实际的项目中多数使用文件锁,因为表锁,会阻塞,当对一些表添加写锁后,其他进程就不能操作了。这样会阻塞整个网站,会拖慢网站的速度。

关于怎么优化Mysql数据库就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: 怎么优化Mysql数据库

本文链接: https://www.lsjlt.com/news/53657.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql数据库怎么优化
    mysql数据库怎么优化?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。mysql数据库怎么优化1.使用小的整数类型2.无特殊情...
    99+
    2022-10-18
  • 怎么优化Mysql数据库
    这篇文章将为大家详细讲解有关怎么优化Mysql数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。学无止境,数据库优化分为方方面面,在这里,我进行了比较全的总结,分享给正...
    99+
    2022-10-18
  • MySQL数据库怎么进行优化
    这篇文章主要讲解了“MySQL数据库怎么进行优化”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL数据库怎么进行优化”吧!  MySQL数据库怎么优化...
    99+
    2022-10-18
  • 怎么优化MySQL数据库性能
    这篇文章主要为大家展示了“怎么优化MySQL数据库性能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么优化MySQL数据库性能”这篇文章吧。  1、选取最适用...
    99+
    2022-10-19
  • MySQL数据库优化
    数据库优化 数据库优化分为以下几个大类: SQL语句优化 事务优化 表结构优化 使用缓存和NoSQL数据库方式存储,如MongoDB/Memcached/Redis来缓解高并发下的数据库查询的压力 减少数据库操作次数,尽量使用数据库访问...
    99+
    2021-10-15
    MySQL数据库优化
  • MySQL数据库优化是怎么样的
    这期内容当中小编将会给大家带来有关MySQL数据库优化是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的...
    99+
    2022-10-19
  • MySQL数据库优化(1)
    前言 不管对于哪种服务,对于其优化,无非是从两个方面着手,第一个是对于硬件方面的优化,第二个是对系统以及服务本身的优化。 1、查询连接MySQL服务器的次数 mysql> show status li...
    99+
    2022-10-18
  • MYSQL数据库优化(一)
    内存的读写速度远大于磁盘的读写速度,减少磁盘读写,可以作为重点优化方向。 数据库内部最重要的就是存储结构,存储结构必然涉及到数据结构知识。比如用到了常用的哈希图、树。 MYSQL数据库常用两种引擎,InnoDB、MyISAM,...
    99+
    2015-04-25
    MYSQL数据库优化(一)
  • MySQL数据库中怎么优化索引查询
    这篇文章给大家介绍MySQL数据库中怎么优化索引查询,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。问题描述:我们要访问的表是一个非常大的表,四千万条记录,id是主键,program_i...
    99+
    2022-10-18
  • MySQL 5.7数据库参数优化
    连接相关参数 ...
    99+
    2022-10-18
  • mysql数据库环境优化
    一、环境优化1.1内存优化由于数据库主机一般内存较大,因此采用huge page。而且尽量使用80%的内存,以空间换时间。/etc/sysctl.conf配置参数:vm.hugetlb_shm_group=...
    99+
    2022-10-18
  • mysql 数据库优化技巧
    mysql 数据库优化  包括  a.表的设计合理化(符合3NF)  b.添加适当索引(index[4种:普通索引 主键索引 唯一索引unique  全文索引])  ...
    99+
    2022-05-13
    数据库优化 mysql 技巧
  • mysql数据库如何优化
    mysql数据库如何优化?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!MySQL数据库优化的八种方式:1、选取最适用的字段...
    99+
    2022-10-18
  • mysql数据库优化语句
    本篇内容主要讲解“mysql数据库优化语句”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql数据库优化语句”吧!mysql优化语句 数据库语句:...
    99+
    2022-10-18
  • oracle数据库怎么优化
    本篇内容主要讲解“oracle数据库怎么优化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle数据库怎么优化”吧!目录SQL优化的本质SQL优化Road...
    99+
    2022-10-18
  • 怎么优化SQL数据库
    怎么优化SQL数据库?这篇文章详细介绍了SQL数据库的优化原因和优化方案,阅读完整文相信大家对SQL数据库的优化有了一定的认识。一:优化说明A:有数据表明,用户可以承受的最大等待时间为8秒。数据库优化策略有...
    99+
    2022-10-18
  • 优化mysql数据库的方法
    这篇文章主要介绍了优化mysql数据库的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。1、创建索引对于查询占主要的应用来说,索引显得尤为重要...
    99+
    2022-10-18
  • MySQL数据库的性能优化
    目录一、mysql数据库的优化目标、基本原则:1、优化目标:2.基本原则:二、定位分析SQL语句的性能瓶颈:1、通过show status 命令了解各种SQL的执行效率:2、定位执行效率较低的SQL语句3、通过expla...
    99+
    2023-04-11
    MySQL性能优化 数据库性能优化 sql性能优化
  • 怎样优化数据库
    这期内容当中小编将会给大家带来有关怎样优化数据库,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、数据库优化是一个很广的范围,涉及到的东西比较多,并且每个特定的数据库,其具体的优化过程...
    99+
    2022-10-18
  • 怎么浅析Facebook对MySQL数据库的深度优化
    这期内容当中小编将会给大家带来有关怎么浅析Facebook对MySQL数据库的深度优化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Facebook拥有世界上最大的MySQL数据库集群,其中包含了成千上万...
    99+
    2023-06-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作