当前位置: 首页 > news >正文

建设网站二级建造师如何解聘购房者网站

建设网站二级建造师如何解聘,购房者网站,学习做网页的网站,打开网站访问慢文章目录 1. SQL执行流程2. 数据库缓冲池(Buffer Pool)2.1 缓冲池概述2.2 缓冲池如何读取数据2.3 查看和设置缓冲池的大小2.4 多个Buffer Pool实例2.5 引申问题 1. SQL执行流程 查询缓存#xff1a;因为查询效率往往不高#xff0c;所以在MySQL8.0之后就抛弃了这个功能解析器… 文章目录 1. SQL执行流程2. 数据库缓冲池(Buffer Pool)2.1 缓冲池概述2.2 缓冲池如何读取数据2.3 查看和设置缓冲池的大小2.4 多个Buffer Pool实例2.5 引申问题 1. SQL执行流程 查询缓存因为查询效率往往不高所以在MySQL8.0之后就抛弃了这个功能解析器在解析器中对SQL语句进行语法分析、语义分析优化器在优化器中会确定SQL语句的执行路径比如是根据 全表检索 还是根据 索引检索 等生成相应的 执行计划 一条查询可以有很多种执行方式最后都返回相同的结果。优化器的作用就是找到这其中最好的执行计划执行器在执行之前需判断该用户是否 具备权限。如果有权限就打开表继续执行打开表的时候执行器就会根据表的引擎定义调用存储引擎 API对表进行读写。存储引擎 API 只是抽象接口下面还有存储引擎层具体实现还是要看表选择的存储引擎 比如表test中ID字段没有索引那么执行器的执行流程是这样的 调用 InnoDB 引擎接口取这个表的第一行判断 ID 值是不是1如果不是则跳过如果是则将这行存在结果集中; 调用引擎接口取“下一行”重复相同的判断逻辑直到取到这个表的最后一行。执行器将上述遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端。至此这个语句就执行完成了。对于有索引的表执行的逻辑也差不多。 SQL 语句在 MySQL 中的流程是SQL语句—查询缓存-解析器-优化器-执行器 2. 数据库缓冲池(Buffer Pool) InnoDB 存储引擎是以页为单位来管理存储空间的我们进行的增删改查操作其实本质上都是在访问页面(包括读页面、写页面、创建新页面等操作)。而磁盘 I/0 需要消耗的时间很多而在内存中进行操作效率则会高很多为了能让数据表或者索引中的数据随时被我们所用DBMS 会申请 占用内存来作为数据缓冲池在真正访问页面之前需要把在磁盘上的页缓存到内存中的 Buffer Pool 之后才可以访问。 这样做的好处是可以让磁盘活动最小化从而 减少与磁盘直接进行 I/0 的时间。要知道这种策略对提升 SQL语句的查询性能来说至关重要。如果索引的数据在缓冲池里那么访问的成本就会降低很多。 2.1 缓冲池概述 缓冲池和查询缓存不是同一个东西 在Innodb存储引擎中有一部分数据会放入内存中缓冲池则占了这部分内存的大部分它用来存储各种数据的缓存如下图所示 在InnoDB缓冲池中包括了数据页、索引页、插入缓存、锁信息、自适应Hash和数据字典信息等。 InnoDB存储引擎在处理客户端的请求时当需要访问某个页的数据时就会把 完整的页的数据全部加载到内存中也就是说即使我们只需要访问一个页的一条记录那也需要先把整个页的数据加载到内存中。将整个页加载到内存中后就可以进行读写访问了在进行完读写访问之后并不着急把该页对应的内存空间释放掉而是将其 缓存 起来这样将来有请求再次访问该页面时就可以 省去磁盘IO 的开销了。 缓存原则 “位置 * 频次” 这个原则可以帮我们对 I/0 访问效率进行优化。首先位置决定效率提供缓冲池就是为了在内存中可以直接访问数据其次频次决定优先级顺序。因为缓冲池的大小是有限的比如磁盘有 200G但是内存只有 16G缓冲池大小只有1G就无法将所有数据都加载到缓冲池里这时就涉及到优先级顺序会 优先对使用频次高的热数据进行加载 缓冲池的预读特性 缓冲池的作用就是提升 I/0 效率而我们进行读取数据的时候存在一个“局部性原理”也就是说我们使用了一些数据大概率还会使用它周围的一些数据因此采用“预读”的机制提前加载可以减少未来可能的磁盘 I/O 操作。 2.2 缓冲池如何读取数据 缓冲池管理器会尽量将经常使用的数据保存起来在数据库进行页面读操作的时候首先会判断该页面是否在缓冲池中如果存在就直接读取如果不存在就会通过内存或磁盘将页面存放到缓冲池中再进行读取。 缓存在数据库中的结构和作用如下图所示注意是在存储引擎中 如果我们执行 SQL 语句的时候更新了缓存池中的数据那么这些数据会马上同步到磁盘上吗? 实际上当我们对数据库中的记录进行修改的时候首先会修改缓冲池中页里面的记录信息然后数据库会以 一定的频率刷新 到磁盘上。注意并不是每次发生更新操作都会立刻进行磁盘回写。缓冲池会采用一种叫做 checkpoint 的机制 将数据回写到磁盘上这样做的好处就是提升了数据库的整体性能。 比如当 缓冲池不够用 时需要释放掉一些不常用的页此时就可以强行采用 checkpoint 的方式将不常用的脏页回写到磁盘上然后再从缓冲池中将这些页释放掉。这里脏页(dirty page) 指的是缓冲池中被修改过的页与磁盘上的数据页不一致 2.3 查看和设置缓冲池的大小 如果使用的是 MySQL MyISAM 存储引擎它只缓存索引不缓存数据对应的键缓存参数为 key_buffer_size你可以用它进行查看 如果使用的是 InnoDB 存储引擎可以通过查看 innodb_buffer_pool_size 变量来查看缓冲池的大小。命令如下: show variables like innodb_buffer_pool_size;即 innoDB 的默认的缓冲池大小只有 134217728/1024/1024128MB。我们可以修改缓冲池大小比如改为256MB方法如下 set global innodb_buffer_pool_size 268435456;或者修改配置文件 [server] innodb_buffer_pool_size 2684354562.4 多个Buffer Pool实例 Buffer Pool本质是InnoDB向操作系统申请的一块 连续的内存空间在多线程环境下访问Buffer Pool中的数据都需要 加锁 处理。在Buffer Pool特别大而且多线程并发访问特别高的情况下单一的Buffer Pool可能会影响请求的处理速度。所以在Buffer Pool特别大的时候我们可以把它们 拆分成若干个小的Buffer Pool每个Buffer Pool都称为一个 实例它们都是独立的独立的去申请内存空间独立的管理各种链表。所以在多线程并发访问时并不会相互影响从而提高并发处理能力。 可以在服务器启动的时候通过设置 innodb_buffer_pool_instances 的值来修改Buffer Pool实例的个数比方说这样下述值默认为1 [server] innodb_buffer_pool_instances2查看缓冲池的个数使用命令 show variables like innodb_buffer_pool_instances;每个 Buffer Pool实例占用内存空间为总共的大小除以实例的个数即如下公式 innodb_buffer_pool_size/innodb_buffer_pool_instances即上面设置缓冲池总大小为256MB后再设置缓冲池实例数为2后计算结果为每个实例占用内存空间位128MB。 注意不是说Buffer Pool实例创建的越多越好分别管理各个Buffer Pool也是需要 性能开销 的InnoDB规定当innodb_buffer_pool_size的值小于1G的时候设置多个实例是无效的InnoDB会默认把innodb_buffer _pooL instances 的值修改为1。而我们鼓励在Buffer Pool大于或等于1G的时候设置多个Buffer Pool实例。 2.5 引申问题 当我们查询数据的时候会先去Buffer Pool中查询。如果Buffer Pool中不存在存储引擎会先将数据从磁盘加载到Buffer Pool中然后将数据返回给客户端同理当我们更新某个数据的时候如果这个数据不存在于Buffer Pool同样会先将数据加载进来然后修改内存的数据。被修改过的数据会在之后统一刷入磁盘。 这个过程看似没啥问题实则是有问题的。假设我们修改Buffer Pool中的数据成功但是还没来得及将数据刷入磁盘MySQL就挂了怎么办? 按照上图的逻辑此时更新之后的数据只存在于Buffer Pool中如果此时MySQL宕机了这部分数据将会永久地丢失; 再者我更新到一半突然发生错误了想要回滚到更新之前的版本该怎么办?连数据持久化的保证、事务回滚都做不到还谈什么崩溃恢复? 答 Redo Log解决未及时刷盘MySQL宕机的问题 Undo Log解决发生错误事务需要回滚的问题 以上两个Log将在日志篇再详细分析。
http://www.hkea.cn/news/14433094/

相关文章:

  • 深圳动力网站设计公司网络管理系统登录
  • 西安知名网站推广wordpress 全局广告
  • 网站推广到海外怎么做免费不需要vip的追剧软件
  • 安徽常青建设集团网站厦门网站开发比较大的公司
  • 中山企业网站优化郑州一建南阳分公司
  • win8 metro风格网站后台管理模板河南省建设监理协会网站证书查询
  • seo资料站google站长工具
  • 一般用什么做网站首页马尾网站建设
  • 为什么上不了建设银行个人网站网站建设费财务列账
  • 网站建设注意事情大气有内涵的公司名字
  • 坪山城市建设局官方网站大学科技园东区 做网站
  • 长春网站推广有赞商城网站建设
  • 来凡网站建设公司专门下载工程建设标准的网站
  • 流程图在线制作网站医疗器械经营质量管理规范
  • 卖灯杆的做网站好版面设计软件
  • 上虞网站建设网络安全设计包括哪些方面
  • 公司网站建设要注意什么问题wordpress 免费 主题下载
  • 网站性能优化项目管理平台
  • 衡水哪个公司做网站好作文网有哪些
  • 丰县住房和城乡建设局网站张家界工程建设信息网站
  • 龙岗网站设计信息网站建立
  • 外贸工厂 网站建设池州市建设工程质量安全监督局网站
  • 光谷做网站推广价格网站运营教程
  • 用c 实现网站开发网站建设公司专业网站研发开发
  • 天津低价网站建设南京做网站的客户电话
  • 医院网站和公众号建设方案外贸做中英文网站
  • 做网站是前端还是后端保定有哪些做网站的地方
  • 娱乐平台网站开发免费红圈工程项目管理软件
  • 二手书屋网站开发的意义烟台个人网站建设
  • 论坛门户网站建设石家庄公司的网站设计