Mysql在互联网企业中应用非常广泛,互联网企业的特点访问量非常大,怎么样优化mysql就成了摆在我们面前的一道难题。

我们从mysql的逻辑架构说起:

最上面一层是客户端的连接服务,主要完成客户端的连接处理,授权认证。在该层有一个线程池,每一个连接从线程池中获取线程,省去了创建和销毁线程的开销。

中间这一层可以完成查询解析,分析,优化,缓存。存储过程,触发器,视图也是在这一层。

最下面一层是存储引擎,负责mysql中数据的存储和提取。

和其它数据库有所不同,mysql的存储引擎是可插拔的,可以根据不同的场合使用不同的存储引擎。

存储引擎:

存储引擎就是存储数据,更新查询数据,建立索引等等的技术实现方式,mysql5.0支持的存储引擎包括: InnoDB 、MyISAM 、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中使用最多的是InnoDB 和MyISAM,mysql5.5之后InnoDB是默认的存储引擎我们重点讨论这两个存储引擎

查看mysql默认存储引擎的命令:

show variables like '%storage_engine%'

InnoDB存储引擎和MyISAM的对比图:

InnoDB存储引擎和MyISAM存储引擎的最大区别有以下三点:

1. InnoDB支持事物,MyISAM不支持

2. InnoDB支持外键,MyISAM不支持

3. 批量插入的速度MyISAM要高于InnoDB

基于以上特点来看看在实际使用中应该如何选择存储引擎:

InnoDB存储引擎:因为InnoDB存储引擎支持事物,所以对于要求事物完整性的场合需要选择InnoDB,比如数据操作除了插入和查询以外还包含有很多更新删除操作,像财务系统等对数据准确性要求较高的系统。

MyISAM存储引擎:如果系统是以读操作和插入操作为主,只有很少的更新删除操作,并且对事物的之处没有要求那么可以选择这个存储引擎。

mysql存储过程中怎么睡几秒_MySql的逻辑架构相关推荐

  1. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  2. mysql扩展中如何处理结果集_我们如何处理MySQL存储过程中的结果集?

    我们可以使用游标来处理存储过程中的结果集.基本上,游标允许我们迭代查询返回的一组行并相应地处理每一行. 为了演示在MySQL存储过程中CURSOR的用法,我们基于以下名为" student_ ...

  3. mysql存储过程中as_Mysql存储过程中的delimiter

    这个命令与存储过程没什么关系吧. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 默认情况下,delimiter是分号;.在命令行客户端中,如果有一行命令以分号结束, ...

  4. MySQL存储过程中的3种循环

    MySQL存储过程中的3种循环 在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易 ...

  5. mysql 存储过程中limit

    mysql 存储过程中limit 1.mysql的高版本(5.5),存储过程中的limit可以使用变量,如下:select * from student limit iStart,iNum; 2.my ...

  6. mysql存储过程是不是不能穿sql语句_mysql存储过程能不能直接执行拼接的sql语句...

    展开全部 当然可以,就是在mysql存储过程中使用动态sql,就可以拼接sql,然62616964757a686964616fe58685e5aeb931333361323562后执行了. 给你复制一 ...

  7. linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法

    中文乱码无论在何时都是一个头疼的问题,mysql的存储过程参数也同样存在这个问题. 1.直接使用insert into语句没问题,能够正常插入汉字. 2.把insert into语句移到Procedu ...

  8. mysql 存储过程中 if else的使用 和赋值方式

    mysql 存储过程中 if else的使用 和赋值方式 在mysql 中顶一个变量的语法 DECLARE variable_name datatype(size) DEFAULT default_v ...

  9. mysql存储过程给多个变量赋值_MySQL存储过程如何进行变量的定义和赋值

    昨天我们讲了mysql存储过程创建修改与删除,下面我们这篇教程是讲关于mysql存储过程中变量的定义赋值操作哦. 一.变量的定义 mysql中变量定义用declare来定义一局部变量,该变量的使用范围 ...

最新文章

  1. 使用idea创建springboot项目并打成war包发布到weblogic上...
  2. 华为云总裁郑叶来:易获取、用得起、方便用的算力是人工智能发展的关键
  3. Flutter Android/iOS包大小分析
  4. Windows Server 2012 R2 VDI系列(一)—环境简介
  5. BZOJ4557:[JLOI2016/SHOI2016]侦察守卫——题解
  6. 在storm中使用定时保存
  7. 通过Ftp put命令上传导致文件损坏的解决办法
  8. 【计算机本科补全计划】王道单科--栈的实现以及一些性质
  9. 如何在Java的特定范围内生成随机整数? [英]How do I generate random integers within a specific range in Java?
  10. Linux 下java jdk安装
  11. Delphi ArcEngine 创建比例尺
  12. vmware复制fedora16出现网络启动错误
  13. 线性同余算法 (LCG)
  14. x210ii开发板使用fastboot下载出现没有权限的问题
  15. 【舆情监控】社会化大数据应用平台TOOM舆情监测系统
  16. java 中文分词转拼音_如何实现拼音与汉字的互相转换
  17. 为什么PPIO要设计支付代理节点?
  18. 一加5t ,安卓p系统卡在更新页面,安卓p降级教程(一加5t测试通过)
  19. 用html5做一个介绍自己家乡的页面_(近万字)一篇文章带你了解HTML5和CSS3开发基础与应用-适合前端面试必备...
  20. vue下载pdf为空问题解决

热门文章

  1. 月份第一天_4月份的第一天,全省迎来晴暖天气~
  2. datatables 搜索框 placeholder 属性
  3. MSP432P401R TI Drivers 库函数学习笔记(五)PWM
  4. 无需另配定时器在STM32 HAL下实现微秒级延时(兼容FreeRTOS)
  5. Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析
  6. rtsp摘要认证协议(Response计算方法)
  7. vim cscope taglist 使用
  8. 为CEDIT添加有颜色的边框
  9. 前端学习(3192):react第一个案例
  10. 前端学习(3189):react简介