MySql的数据库优化到底优啥了都??(1)
嘟嘟最不愿意做的就是翻招聘信息。
因为一翻招聘信息,工作经历你写低于两年都不好意思,前后端必须炉火纯青融汇贯通,各式框架必须如数家珍不写精通咋的你也得熟练熟练,
对了你是985吗?你是211吗??你不是前两个你咋的也得是个本科吧。。你本科你还得计算机专业(脑瓜疼。。脑瓜疼),我脑瓜疼完了还不行,你
还得会点儿数据库优化,还得处理处理高并发。。。嘟嘟这种菜鸟一看见这些东西就想去路边摊买个大西瓜,把西瓜吃完,再把脑袋塞西瓜里边凉快凉
快。
但是转念一想,好像两年编程经历如果不会点儿数据库优化不会点儿多线程高并发啥的别人可能以为你去收拾卫生去了。。。
好吧好吧嘟嘟就一边学一边整理一下子数据库优化到底是优化个啥了,到时候碰到面试官还能对吹个几回合。
MySql的那些个存储引擎
话说MySql为啥有那老些个存储引擎?这个是有历史原因的。因为MySql是个开源的数据库,但是呢有一堆的人对MySql有着不同的期待。
比如说甲想让MySql读取贼6,增删就不太要求,乙却正好相反。这种众口难调的需求现状就导致MySql把存储引擎给开源了:“你们自己写存储
引擎吧,存储方式啥的你们都自己定”。于是乎,MySql的存储引擎就多了。
至于存储引擎到底是森么??数据库引擎是一种算法及IO的操作方式。算法:如何存数据(存什么样的文件里,文件格式什么样,分成几个
文件诸如此类)。IO操作(如何去访问,怎么做增删改查,磁盘上的文件我是通过物理地址去访问还是怎么得。。。。。)看到这里,嘟嘟仿佛
看到了简单的“存储引擎”四个字背后的宏大与可怕,故事往往就是没这么简单。先上几个比较常见的数据库存储引擎并且粗浅的认识一哈。
1.ISAM
因设计之时考虑到查询次数远大于更新次数,ISAM以其读取速度快并且所需内存等资源小的特性曾经广受大家喜爱,经久不衰。
ISAM也有自己的缺点,不能容错,没有事务处理(这个挺要命),不支持数据恢复。如果用在关键应用程序里面,还得经常备份。硬盘崩溃
后无法恢复数据。
2.MyISAM
ISAM拓展格式(MySql5.5之前默认引擎)提供了索引和字段管理等功能,增加表格锁定机制优化多个并发读写操作。但是需要经常使用一个
OPTIMIZE TABLE 命令来恢复被更新机制所浪费的空间,重要缺陷是表损坏后无法恢复数据(ISAM是硬盘坏了无法恢复数据)。
MyISAM继承了ISAM多有特性,也不支持事物(。。。。)。
如果使用该数据库引擎,则会生成三个文件:(存储方式)
.frm (表结构信息) desc命令查看的就是这个表。
.MYD (数据文件) 表中的具体数据。
.MYI (表的索引信息) 索引文件的内容要远远少于数据文件,所以查询的时候只要where 条件中带有索引信息,就会先找
MYI文件 MYI文件是以key-value形式存储,key(索引这一列的某个值),value(对应的那条数据的物理磁盘地址)。
如果发生增删改,则需要更改.MYD和.MYI两个文件,这也是他增删改慢的原因,数据越多,写操作越低。因为要维护数据和索引的信息
因为在WEB开发中所进行的大部分操作都是读操作,所以MyISAM广受WEB开发者的青睐。
3.InnoDB(这个名字嘟嘟见过。。)
比ISAM和MyISAM相对慢一些,但是它支持事务处理和外键处理,MySql5.5以上常用默认引擎,InnoDB锁定在行级。InnoDB定义在表级
别上(如果你心情好的话可以使用一个InnoDB的表加上一个ISAM的表加上一个MyISAM的表进行三表联合查询。。)InnoDB处理大数据量时
效率贼高
InnoDB 的表数据和索引都在一个文件里面
但是MySql5.7版本就被分成了两个文件.frm(数据)和.ibd(索引)
4.InnoDB 和 MyISAM的区别
(1)InnoDB支持事务,每一条sql语句都会默认封装成事务并且自动提交(影响速度),所以最好用 begin transaction 和 commit 之间插入多
条sql语句组成一个事务。
(2)InnoDB支持外键,MyISAM不支持,对于一个包含外键的InnoDB表转化为MyISAM会失败
(3)InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键!!通过主键索引效率很高。但是辅助索引需要两次查询,先通过辅助索引
查询到主键然后通过逐渐查询到数据,所以主键不能过大。MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助
索引是独立的。
(4)InnoDB不保存表的具体行数,执行select count(*) from table 的时候会进行全表扫面,而MyISAM(frm文件里面)用了一个变量保存了整个
表的行数,执行以上语句只需要读出变量即可。
(5)InnoDB不支持全文索引,MyISAM支持全文索引,查询效率上MyISAM要高。
第一部分嘟嘟就写这么多吧。因为如果多了的话嘟嘟怕各位看官看不下去。反正嘟嘟看别人的文章的时候就有这种感觉(当然更多的时候是因为看不懂)
嘟嘟以后写博客的目标就是尽量写的通俗易懂,能用大白话就用大白话,技术性太强对于嘟嘟这种新手而言实在是一时消化不了。
MySql的数据库优化到底优啥了都??(1)的更多相关文章
- MySql的数据库优化到底优啥了都??(2)
嘟嘟在写此篇文章之前心里先默念(简单,通俗,工整)*10 吟唱完了,进入正题 3.Memory存储引擎 除了存放一个表结构相关信息的.frm文件在磁盘上,其他数据都存储在内存中.说白点哪天你数据库死机 ...
- MySql的数据库优化到底优化啥了都(3)
嘟嘟在上两个文章里面简单粗糙的讲了讲关于MySql存储引擎的一些特性以及选择.个人感觉如果面试官给我机会的话,至少能说个10分钟了吧.只可惜有时候生活就是这样:骨感的皮包骨头了还在那美呢.牢骚两句,北 ...
- MySQL/Oracle数据库优化总结
MySQL数据库优化的八种方式 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能 ...
- MySQL之数据库优化
Mysql数据库的优化技术 对mysql优化是一个综合性的技术,主要包括 •表的设计合理化(符合3NF) •添加适当索引(index) [四种: 普通索引.主键索引.唯一索引unique.全文索引] ...
- MySQL:数据库优化,看这篇就够了
数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷. 1. 优化一览 ...
- Mysql实例 数据库优化
目录 一.前言 二.数据库表设计 三.数据库结构设计 四.数据库性能优化 硬件配置选择 数据库配置优化 系统配置优化 数据库安全优化 五.数据库架构扩展 增加缓存 主从复制与读写分离 分库 分表 分区 ...
- 常见的Mysql数据库优化总结
索引 1.主键索引 作用:唯一约束和提高查询速度 #建表时创建主键索引 create table `table_name`( `id` int unsigned not null auto_incre ...
- mysql优化-数据库优化、SQL优化
我有一张表w1000,里面有1000万条数据,这张表结构如下:CREATE TABLE `w1000` ( `id` varchar(36) NOT NULL, `name` varchar(10) ...
- mysql 百万级数据库优化方案
https://blog.csdn.net/Kaitiren/article/details/80307828 一.百万级数据库优化方案 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 wher ...
随机推荐
- MySQL操作详解
创建并使用数据库 查看服务器上的数据库:SHOW DATABASES; 创建数据库:CREATE DATABASE <数据库名>; 指明使用何数据库:USE <数据库名> 创建 ...
- 以太坊(ethereum)开发DApp应用的入门区块链技术教程
概述 对初学者,首先要了解以太坊开发相关的基本概念. 学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前 ...
- Qt https 用户认证authenticationRequired()
用QNetworkAccessManager以POST方式访问https需要用户认证,所以用SIGNAL(authenticationRequired(QNetworkReply *, QAuthen ...
- Delphi Thread.Queue与Synchronize的区别(差别: Synchronize是阻塞,Queue是非阻塞)
前话: 其实大家要学会看源码, 我接下来要说的这些东东,与其等别人讲,还不如自己搞几个代码试一下,印象还深刻点 TThread.Queue和TThread.Synchronize的区别, 效果上:二 ...
- 每天进步一点--WCF学习笔记
最近买了一本书WCF服务编程,重头再开始了解学习WCF,现将学习记录,以便后来复习,也希望和大家一起进步. WCF用终结点表示一种组成关系,终结点就是地址.契约与绑定的混合品,即 地址(Address ...
- Delphi中,indy控件实现收发邮件的几点学习记录( 可以考虑加入多线程,用多个邮箱做一个邮箱群发器) 转
关于用Delphi中的Indy控件实现收发邮件的几点学习记录 这几天心里颇不宁静,不是因为项目延期,而是因为自己几个月前做的邮件发送程序至今无任何进展,虽然一向谦虚的人在网上发 ...
- 01 Django基础
目录 一.什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对 ...
- chrome浏览器开发者工具F12中某网站的sources下的源码如何批量保存?
目录 chrome浏览器 开发者工具F12中某网站的sources下的源码如何批量保存 1. 常用保存Sources源码的两种方法 1.1单个文件 1.2 单个页面 2. 问题 3.解决方案 chro ...
- EditPlus 格式化HTML JS CSS
首先你得安装一个EditPlus,然后下载你想格式化的xxxformatter.js文件,也就是网上说的EDTOOLS 1.在你的工具里边找到-->配置自定义工具 具体做法如下: 第5步 命令: ...
- C++程序设计1(侯捷video 1-6)
一.头文件的防御式声明(video2) #ifndef __COMPLEX__ #define __COMPLEX__ //内容 #endif 二.初步感受模板(video2) 定义的时候: //复数 ...