嘟嘟最不愿意做的就是翻招聘信息。

  

  因为一翻招聘信息,工作经历你写低于两年都不好意思,前后端必须炉火纯青融汇贯通,各式框架必须如数家珍不写精通咋的你也得熟练熟练,

对了你是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)的更多相关文章

  1. MySql的数据库优化到底优啥了都??(2)

    嘟嘟在写此篇文章之前心里先默念(简单,通俗,工整)*10 吟唱完了,进入正题 3.Memory存储引擎 除了存放一个表结构相关信息的.frm文件在磁盘上,其他数据都存储在内存中.说白点哪天你数据库死机 ...

  2. MySql的数据库优化到底优化啥了都(3)

    嘟嘟在上两个文章里面简单粗糙的讲了讲关于MySql存储引擎的一些特性以及选择.个人感觉如果面试官给我机会的话,至少能说个10分钟了吧.只可惜有时候生活就是这样:骨感的皮包骨头了还在那美呢.牢骚两句,北 ...

  3. MySQL/Oracle数据库优化总结

    MySQL数据库优化的八种方式 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能 ...

  4. MySQL之数据库优化

    Mysql数据库的优化技术 对mysql优化是一个综合性的技术,主要包括 •表的设计合理化(符合3NF) •添加适当索引(index) [四种: 普通索引.主键索引.唯一索引unique.全文索引] ...

  5. MySQL:数据库优化,看这篇就够了

    数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷. 1. 优化一览 ...

  6. Mysql实例 数据库优化

    目录 一.前言 二.数据库表设计 三.数据库结构设计 四.数据库性能优化 硬件配置选择 数据库配置优化 系统配置优化 数据库安全优化 五.数据库架构扩展 增加缓存 主从复制与读写分离 分库 分表 分区 ...

  7. 常见的Mysql数据库优化总结

    索引 1.主键索引 作用:唯一约束和提高查询速度 #建表时创建主键索引 create table `table_name`( `id` int unsigned not null auto_incre ...

  8. mysql优化-数据库优化、SQL优化

    我有一张表w1000,里面有1000万条数据,这张表结构如下:CREATE TABLE `w1000` ( `id` varchar(36) NOT NULL, `name` varchar(10) ...

  9. mysql 百万级数据库优化方案

    https://blog.csdn.net/Kaitiren/article/details/80307828 一.百万级数据库优化方案 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 wher ...

随机推荐

  1. .NET DataTable转换为JSON格式的字符串

    在进行数据传递的时候,有时我们需要通过Ajax的方式或者其他的方式传递一个数据列表,可以将DataTable或者其他形式的数据列表转换为JSON的格式,通过Ajax实体的形式进行传递. 比如说: // ...

  2. [转]UE的职责

    最近开始负责产品工作,从产品定位到需求文档再到原型设计,以及后续产品的路线规划,渐渐感觉忙不过来了.所以准备招一个UE/X来辅助. 以前做项目,也没接触过什么UE,所以对UE的工作不是很清楚,尤其是P ...

  3. Docker+ Kubernetes已成为云计算的主流(二十五)

    前言 最近正在抽时间编写k8s的相关教程,很是费时,等相关内容初步完成后,再和大家分享.对于k8s,还是上云更为简单.稳定并且节省成本,因此我们需要对主流云服务的容器服务进行了解,以便更好地应用于生产 ...

  4. 一次信号量引发的tomcat异常退出

    近期在玩大数据.有个朋友找过来,说他线上的tomcat会莫名其妙的退出,表示非常苦恼,请我帮看看.每次他发现退出了,都通过腾讯云的WEB控制台登录,启动tomcat. 本着助人为乐(shao kao ...

  5. 【练习题】proj1 判断二叉树子树和是否为指定的值

    #include <stdio.h> #include <vector> #include <list> #include<iostream> usin ...

  6. Hexo+NexT(三):Next主题配置详解

    阅读本篇之前,假定读者已经有了Node.js的基础,如需要补充Node.js知识的,请自行百度. Hexo是在Node.js框架下的一个项目,利用Node.js提供的强大功能,完成从Markdown到 ...

  7. never下sqlcient

    [一]参数的输入 如执行update,我们写的代码应该是 sqlclient.Update(,, },@Name = "eee" }): 表示更新Id =1,2,3这三行的信息.这 ...

  8. Java 添加、修改PPT幻灯片中的表格

    本文将介绍通过Java编程在PPT操作表格的方法.包括添加表格到PPT幻灯片,并设置表格样式.单元格对齐方式.单元格背景色.边框样式.字体.字号.合并单元格等:同时,通过加载已有表格的幻灯片也可以对表 ...

  9. 使用release自动打包发布正式版详细教程

    昨天写了个release插件的版本管理,今天就在自动发布过程中遇到了许多坑,只能再写一篇自动发布详细教程,纪念我那昨日逝去的青春 (╥ _ ╥`) release正常打包发布流程按照如下几个阶段: C ...

  10. 使用 cxf的程序 在win10 测试部署时报空指针异常

    2018-11-08 15:50:55.072 DEBUG 21524 --- [nio-8080-exec-1] o.s.b.w.s.f.OrderedRequestContextFilter  : ...