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

盐城网站开发怎么样天津西青区离哪个火车站近

盐城网站开发怎么样,天津西青区离哪个火车站近,网站优化一般要怎么做,软件设计模式目录 1、Memory引擎介绍 2、Memory内存结构 3、内存表的锁 4、持久化 5、优缺点 6、应用 前言 Memory 存储引擎 是 MySQL 中一种高性能但非持久化的存储方案,适合临时数据存储和缓存场景。其核心优势在于极快的读写速度,需注意数据丢失风险和内存占…

目录

1、Memory引擎介绍

2、Memory内存结构

3、内存表的锁

4、持久化

5、优缺点

6、应用


前言

        Memory 存储引擎 是 MySQL 中一种高性能但非持久化的存储方案,适合临时数据存储缓存场景。其核心优势在于极快的读写速度,需注意数据丢失风险内存占用限制

        在使用时需结合业务需求,合理配置参数(如 max_heap_table_size),并避免将其用于需要持久化或事务支持的场景。


1、Memory引擎介绍

        MySQL Memory引擎用于创建内存中的表,数据存储在内存,访问快速但重启后数据丢失。通过--init-file启动mysqld可持久化数据。

        内存表默认使用hash索引,适用于临时表,但有限制如不支持BLOB/TEXT,且所有用户可见。可以利用其速度优势创建内存临时表替代MyISAM临时表。

  • 数据完全存储在内存中
    • 数据和索引均存在于内存中,无磁盘 I/O 开销。
    • 重启 MySQL 或异常关闭后,数据会丢失。
  • 存储限制
    • 受 max_heap_table_size 和 tmp_table_size 参数限制。
    • 不支持大字段(如 TEXTBLOB)。
  • 存储结构
    • 仅支持哈希索引,适合等值查询(=),不支持范围查询(><BETWEEN)。
  • 不支持事务

2、Memory内存结构

    仅支持哈希索引,数据存放将索引和数据分开存储。

        索引采用Hash的形式,存放主键id和指向数据的指针,而数据则按插入顺序存放。称这种数据组织方式为堆组织方式。

如下图所示:

特点:且数据的hash的key也不支持有序,value也没指定的顺序。

3、内存表的锁

        内存表不支持行锁,只支持表锁。如果一张表有更新,就会堵住其它所有在这个表上的读写操作。导致了Memory存储引擎在进行并发操作时会造成大量的阻塞,效率不高。

示例:

        在这个执行序列里, session A的update语句要执行50秒, 在这个语句执行期间session B的查询会进入锁等待状态。 session C的show processlist 结果输出如下:

        跟行锁比起来, 表锁对并发访问的支持不够好。 


4、持久化

如果数据库重启,所有的内存表都会被清空。

在主备场景:

看一下下面这个时序:

  1. 业务正常访问主库。
  2. 备库硬件升级, 备库重启, 内存表t1内容被清空。
  3. 备库重启后, 客户端发送一条update语句, 修改表t1的数据行, 这时备库应用线程就会报错“找不到要更新的行”。

⚠️注意:内存表可能导致主备不一致。

 解决方案:

        所以, 担心主库重启之后, 出现主备不一致, MySQL在实现上做了这样一件事儿: 在数据库重启之后, 往binlog里面写入一行DELETE FROM t1。

        在备库重启的时候, 备库binlog里的delete语句就会传到主库, 然后把主库内存表的内容删除。这样使用的时候就会发现, 主库的内存表数据突然被清空了。

无论是M-S架构,还是双M架构,内存表都不适合在生产环境上作为普通数据表使用。


5、优缺点


6、应用

设置:

set sql_log_bin=off;
alter table tbl_name engine=innodb;

假设有以下两张表t1、t2,其中表t1是Memory引擎,表t2是InnoDB引擎。

-- 创建表t1,t2,分别使用Memory引擎和InnoDB引擎;
create table t1(id int primary key,c int) engine=Memory;
create table t2(id int primary key,c int) engine=innodb;
insert into t1values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(0,0);
insert into t2values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(0,0);-- 执行查询语句,得到结果如下图:
select * from t1;
select * from t2;

结果如下:

内存表t1的返回结果里面0在最后一行, 而InnoDB表t2的返回结果里0在第一行。

        表t1是Memory表,而Memory表的数据和索引是分开的。

数据组织方式如下:

        由上可知,内存表的数据部分以数组的方式单独存放,而主键id索引里,存的是每个数据的位置。主键id是hash索引,可以看到索引上的key并不是有序的。

        在对表t1执行select *的时候, 走的是全表扫描, 也就是顺序扫描这个数组。 因此, 0就是最后一个被读到, 并放入结果集的数据。

        表t2是InnoDB表,其数据就放在主键索引树上,主键索引是B+树。

数据组织方式如下:

        主键索引上的值是有序存储的,在执行select *的时候, 就会按照叶子节点从左到右扫描, 所以得到的结果里, 0就出现在第一行。


关于三种不同引擎的总结


参考文章:

1、MySQL查询执行(八):Memory引擎_mysql memory引擎-CSDN博客

http://www.dtcms.com/a/463717.html

相关文章:

  • 做网站需要画原型图么东营市造价信息网
  • 公司注销后网站备案现在还有做系统的网站吗
  • 做折扣的网站像美团这种网站怎么做的
  • 怎么用链接进自己做的网站wordpress连接微博源码
  • 在线员工后台网站建设上海免费网站建设
  • 外贸公司做网站山东省建设工程信息网站
  • 房地产项目网站网站建设支付安全
  • 网站做竞价优化做网站大概需要几步
  • 深圳网站建设罗湖wordpress 文章阅读数
  • 辽宁省建设厅特种工查询网站网络营销方案毕业设计
  • dz整站免费网站建设做外贸的推广渠道
  • 织梦网站优化怎么做中国建设银行网站忘记密码怎么办
  • 网站建设的行业资讯_阳江招聘网0662
  • 网站建设岗位有哪些天元建设集团有限公司衡阳分公司
  • 哪些网站是python做的怎么做网站跟域名
  • wordpress cad插件宁波seo外包快速推广
  • 个人建设网站要钱吗房屋装修设计软件哪个好用
  • 网站开发建设成本网站程序模板下载
  • 网站系统建设汇报河北省网站快速备案
  • h5网站模板源码高质量外链代发
  • 平面素材网站哪个最好建站需要会哪些语言
  • 学校网站建设阶段性目标效果好企业营销型网站建设开发
  • 影响网站权重的因素知名的seo快速排名多少钱
  • 莆田的外贸网站wordpress怎么样建站内战
  • 山西太原网站制作网站设计步骤及图解
  • 垂直汽车网站做电商的优势企业进行网站建设的方式有( )
  • 深圳网站建设亿联时代好牌子网
  • 杭州交易网站建设访问网站速度跟域名还是服务器有关
  • 织梦制作html 网站地图快速app开发平台
  • 廊坊核酸检测结果seo点击排名工具有用吗