mysqly优化 入门 第一篇

数据库的优化主要分两方面,一方面是硬件层面的优化,另一方面是参数和语句方面的优化。
今天做一个小结,内容可能不全(也是我自己的理解,如有不得当之处还请及时指出,收到之后我会及时予以修正)

硬件层面

首先我们来看什么算是一台性能强悍的计算机----
首先是计算机(服务器)的配置不能太差 ,处理器–多核(貌似锐龙核多),磁盘读写速度–(固态>普通硬盘)。
由于现在的计算机大多是多核心并且支持并发任务处理的,(mysql也支持多线程) 因此想要提高对数据库的读写操作,因此更换一个读写速度更好的磁盘是一个选择。
其次如果是企业级别的最好是整个分布式的以提高并发处理能力。

参数层面

优化mysql查询语句,配置参数等 查询的时候优化查询语句 按查询速度排名先后 1,system - 只有一行查询速度,且是系统表
2,const --只有一行的查询,查询条件涉及是primary key 或者unique 3,eq-ref联结查询
,查询条件涉及primary key 或者unique 4,ref联结查询,查询条件不涉及primary key 或者unique
5,联结查询,查询条件中有or,则两个条件必须都是primary key 或者unique,否则就会忽略primary key
或者unique 6,all 是最慢的,因为要全部扫描

代码演示—表中数据如下


mysql> desc hxjy ;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| user_id     | int         | NO   | PRI | NULL    |       |
| user_name   | varchar(16) | YES  |     | NULL    |       |
| user_gender | char(4)     | YES  |     | NULL    |       |
| user_age    | tinyint     | YES  |     | NULL    |       |
| user_jobs   | varchar(32) | YES  |     | NULL    |       |
| user_salary | int         | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)mysql> explain select * from hxjy where  user_id =1011 ;
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+
----------+-------+
| id | select_type | table | partitions | type  | possible_keys | key     | key_len | ref   | rows |filtered | Extra |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+
----------+-------+
|  1 | SIMPLE      | hxjy  | NULL       | const | PRIMARY       | PRIMARY | 4       | const |    1 |100.00 | NULL  |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+
----------+-------+
1 row in set, 1 warning (0.00 sec)mysql>

扫描1行数据就得到我们要的结果,我们会发现type为const,
我们再来看一下条件中没有索引的查询


mysql> explain select * from hxjy where  user_name='赵' ;
+----+-------------+-------+------------+------+---------------+------+---------+------+------+-----
-----+-------------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows | filt
ered | Extra       |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+-----
-----+-------------+
|  1 | SIMPLE      | hxjy  | NULL       | ALL  | NULL          | NULL | NULL    | NULL |   12 |    1
0.00 | Using where |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+-----
-----+-------------+
1 row in set, 1 warning (0.00 sec)

扫描12行数据,才得到我们的结果,我们也会发现type为all,
扫描数据小的要比扫描的多的快。
所以要设置合适的索引来提高查询速度

插入数据— 由于插入数据时表要检查索引,唯一索引,键约束等
1,禁用索引
2,禁用唯一索引
3,禁用外键约束

mysql> explain insert into hxjy values(4552,'蚂yi','男',24,'Worker',5600),(4575,'sdasd','女',23,'Wor
ker',5445),(3232,'sadasd','男',36,'Worker',4556);
+----+-------------+-------+------------+------+---------------+------+---------+------+------+-----
-----+-------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows | filt
ered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+-----
-----+-------+
|  1 | INSERT      | hxjy  | NULL       | ALL  | NULL          | NULL | NULL    | NULL | NULL |
NULL | NULL  |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+-----
-----+-------+
1 row in set, 1 warning (0.00 sec)

mysql> alter table hxjy enable keys ;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> explain insert into hxjy values(475545,'蚂yi','男',24,'Worker',5600),(44521,'sdasd','女',23,'
Worker',5445),(34545,'sadasd','男',36,'Worker',4556);
+----+-------------+-------+------------+------+---------------+------+---------+------+------+-----
-----+-------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows | filt
ered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+-----
-----+-------+
|  1 | INSERT      | hxjy  | NULL       | ALL  | NULL          | NULL | NULL    | NULL | NULL |
NULL | NULL  |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+-----
-----+-------+
1 row in set, 1 warning (0.00 sec)

可能是插入的数据量不够,所以显示不出时间上的区别,(或者又可以显示时间的方法,欢迎提点)
插入数据时如果是往新建的表中插入数据,可以不用禁用索引,因为索引是插入数据之后才建立的,如果表中已有数据,而且要插入大量数据,最好先禁用索引,适用于myisam和innodb

另Load data infile 导入数据要比插入数据快。

表的层面–
表中数据太多的时候对于经常查询的表的内容,可已将该内容拆到另一张表中,(如果要修改表数据可以建立触发条件来保持数据一致,或者建立视图)
用联结查询有时候不如直接建立一张新表快。这个看需要;

mysqly优化 入门 第一篇相关推荐

  1. ElasticSearch入门 第一篇:Windows下安装ElasticSearch

    这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  2. Redis入门第一篇【介绍、安装】

    tags: Redis title: Redis入门第一篇[介绍.安装] 为什么要用Redis 我对Redis的简单理解:Redis相信学JavaEE的同学都听过这个名词,它是一个缓存数据库. Red ...

  3. ps基础教程新手入门第一篇:ps界面的介绍

    欢迎来到慕恬瑶平面设计,今天给大家介绍PS基础教程新手入门第一篇: ps界面的介绍.目的让第一次接触ps的小伙伴通过ps基础教程新手入门来了解ps界面的菜单栏,工具栏已方便日后使用. 首先,打开PS ...

  4. 性能优化系列第一篇——数据库性能优化

    本文章转载的Trinea大神的文章,文章原地址 http://www.trinea.cn/android/database-performance/ 性能优化之数据库优化 本文为性能优化的第一篇--数 ...

  5. SDN入门第一篇——Ubuntu16.04安装mininet-wifi

    SDN入门第一篇--Ubuntu16.04安装mininet-wifi 最近因为项目需要,需要使用mininet搭建SDN仿真平台,mininet-wifi除了包含基本的mininet功能之外还包括引 ...

  6. kaggle新手入门第一篇——Titanic

    Titanic作为Kaggle官方网站的第一篇入门比赛,如果你想学习kaggle,那么从它开始无疑是比较好的一个选择. 首先贴一下网址:https://www.kaggle.com/c/titanic ...

  7. Android JNI入门第一篇——HelloJni

    android支持使用NDK开发C程序,关于配置NDK环境问题应该不用再赘述了,这个网上有很多,这里通过一篇实例来讲述简单的JNI开发,大家可以参考这篇文章(Get Your Eclipse-Inte ...

  8. ebs开发入门 oracle 知乎_微信小程序云开发入门第一篇---开发准备事项

    在开始本文的正式内容之前,先允许我做一个简单的自我介绍,我是一名嵌入式软件开发人员,目前在一家音视频处理芯片公司做linux系统下音视频开发的相关工作,算是嵌入式软件开发行业的老人了,如果您对嵌入式行 ...

  9. 微信小程序云开发入门第一篇---开发准备事项

    在开始本文的正式内容之前,先允许我做一个简单的自我介绍,我是一名嵌入式软件开发人员,目前在一家音视频处理芯片公司做linux系统下音视频开发的相关工作,算是嵌入式软件开发行业的老人了,如果您对嵌入式行 ...

  10. 51单片机入门 第一篇:LED灯

    文章目录 前言 一.LED原理图 二.创建keil5工程 三.代码的编写 四.程序的烧录 总结 前言 本篇文章讲正式带大家开始学习51单片机,希望这些文章能够很好的帮助到大家学习51单片机. 一.LE ...

最新文章

  1. 开机运行记事本怎么回事
  2. Swift2.0语言教程之函数嵌套调用形式
  3. mybatis注解开发
  4. 某程序的bug是什么意思?
  5. Ticket Game CodeForces - 1215D(博弈题,巴什博弈思维)
  6. CodeForces 869E The Untended Antiquity 二维树状数组,随机hash
  7. openssl 1.1.1编译语句
  8. mongodb的java驱动包_mongodb的java驱动包
  9. Java操作itext,寻找给定关键字,并且进行页面抽取和页面盖章两个操作
  10. 解决方案-Visual Studio设置通用配置(包含路径+依赖库)
  11. 从零(0)开始计数与从 1 开始计数
  12. linux是ubuntu还是centos
  13. 安装photoshop2022mac遇到安装失败错误代码182解决方法
  14. 深入理解java虚拟机笔记之一
  15. 剖析:计算机专业大一学生如何学习C语言?如何自学C语言?大学C语言学习视频教程谁有?
  16. 在几何画板中如何制作圆柱的侧面展开动画_几何画板制作圆柱展开图过程详解...
  17. python实现将android手机通讯录vcf文件转化为csv
  18. 谷歌大脑创始成员辞职,他也和Jeff Dean闹掰了
  19. Unity3D引擎入门搭建一个FPS游戏Demo
  20. WiFi功耗管理(一)(概述)

热门文章

  1. 微信开发工具更新后,跳转页面报错
  2. 推荐10个易上手好用的H5网页编辑工具
  3. VS2017安装WTL,解决创建WTL项目一直回弹问题
  4. dumprep.exe遇到无效指令
  5. Note for Dos
  6. “新产业50人论坛”之清华龙桂鲁教授:量子信息与创新发展
  7. [转载] 羽毛球——学打羽毛球 04 正手发高远球
  8. 达梦工具导出慢sqle的xcel表格方法
  9. Github Actions生成 secrets
  10. 临别给《生活大爆炸》做个台词数据分析,你猜谢耳朵最爱说什么?