mysql存储引擎(二)_MySQL

mysql存储引擎(二)

mysql存储引擎二 memory merge berkeleydb存储引擎

MEMORY

MEMORY存储引擎通过采用内存中的内容来创建表。每个Memory表实际上和一个磁盘文件关联起来,文件名采用”表名.frm”的格式。Memory类型的表访问速度极快,因为数据源来自内存,所以数据库关闭时,内存中的数据就会发生丢失。默认使用Hash索引。

mysql> create table memory_table( id int primary key, name varchar(20) )engine=memory;Query OK, 0 rows affected (0.02 sec)mysql> insert into memory_table(id,name) values(2,'frank');Query OK, 1 row affected (0.00 sec)mysql> select * from memory_table;+----+-----------+| id | name      |+----+-----------+|  1 | frankstar ||  2 | frank     |+----+-----------+2 rows in set (0.00 sec)mysql> show table status like 'memory_table' G;*************************** 1. row ***************************           Name: memory_table         Engine: MEMORY        Version: 10     Row_format: Fixed           Rows: 2 Avg_row_length: 66    Data_length: 127008Max_data_length: 12582900   Index_length: 126992      Data_free: 0 Auto_increment: NULL    Create_time: 2016-05-09 22:23:47    Update_time: NULL     Check_time: NULL      Collation: utf8_bin       Checksum: NULL Create_options:        Comment:1 row in set (0.00 sec)ERROR:No query specifiedmysql> show index from memory_table G;*************************** 1. row ***************************        Table: memory_table   Non_unique: 0     Key_name: PRIMARY Seq_in_index: 1  Column_name: id    Collation: NULL  Cardinality: 2     Sub_part: NULL       Packed: NULL         Null:   Index_type: HASH      Comment:Index_comment:1 row in set (0.00 sec)ERROR:No query specified

memory表的内存储存在内存中,如果表的数据很大,那么服务器将会自动将其转换为磁盘表,阀值由temp_table_size系统变量来确定。每个memory表的容量由max_heap_table_size变量的值控制。默认16MB。
主要用于数据内容变化不频繁的代码表及访问速度要求较高、数据量不大的场合,同时需要考虑更新操作数据不回写入到磁盘文件中。

MERGE

它实际上是一组myisam表的组合,将一组结构相同的MyISAM表组合在一起,MERGE表本身没有数据,对于该类型表的插入操作,是通过INSERT_METHOD定义完成的,取值为LAST或者为FIRST,FIRST意味着数据增加到组合表中的第一个myisam表中,同理LAST意味着添加到最后一个表中。所以MERGE表的文件有2个,一个是.frm文件,用于存放数据,还有一个MRG文件,用于存放MERGE表的名称,包括其组成表。

如下:

mysql> create table myisam_table1(    -> id int primary key,    -> data datetime    -> )engine=myisam;Query OK, 0 rows affected (0.02 sec)create table myisam_table2( id int primary key, data datetime )engine=myisam;Query OK, 0 rows affected (0.01 sec)mysql> create table table1_merge_table2(    -> id int primary key,    -> data datetime    -> )engine=merge union=(myisam_table1,myisam_table2) insert_method=first;Query OK, 0 rows affected (0.01 sec)

向2个字表分别添加数据,如下:

mysql> insert into myisam_table1 values(1,'2016-5-7');Query OK, 1 row affected (0.00 sec)mysql> insert into myisam_table1 values(2,'2016-5-6');Query OK, 1 row affected (0.00 sec)mysql> insert into myisam_table2 values(1,'2016-5-7');Query OK, 1 row affected (0.00 sec)mysql> insert into myisam_table2 values(2,'2016-5-6');Query OK, 1 row affected (0.00 sec)

查询merge表,如下:

极品模板微商城订单系统 极品模板微商城订单系统

微商城订单管理系统是一款基于php+mysql开发的php订单管理系统,她的特点如下: 产品特色: 支持商品规格、订单短信提醒,订单提交限制,站外调用, 批量发货/导出,数据报表,物流轨迹、免签支付等。 1、高度开源:除核心授权文件外全部开源,二开方便。 2、分布式部署:支持分布式部署、支持数据库读写分离。 3、第三方存储:支持附件腾讯云、阿里云、七牛云存储

极品模板微商城订单系统 22 查看详情 极品模板微商城订单系统

mysql> select * from table1_merge_table2;+----+---------------------+| id | data                |+----+---------------------+|  1 | 2016-05-07 00:00:00 ||  2 | 2016-05-06 00:00:00 ||  1 | 2016-05-07 00:00:00 ||  2 | 2016-05-06 00:00:00 |+----+---------------------+4 rows in set (0.01 sec)

向merge表中添加一条数据,如下:

mysql> insert into table1_merge_table2 values(3,'2016-5-8');Query OK, 1 row affected (0.00 sec)mysql> select * from table1_merge_table2;+----+---------------------+| id | data                |+----+---------------------+|  1 | 2016-05-07 00:00:00 ||  2 | 2016-05-06 00:00:00 ||  3 | 2016-05-08 00:00:00 ||  1 | 2016-05-07 00:00:00 ||  2 | 2016-05-06 00:00:00 |+----+---------------------+5 rows in set (0.00 sec)mysql> select * from myisam_table1;+----+---------------------+| id | data                |+----+---------------------+|  1 | 2016-05-07 00:00:00 ||  2 | 2016-05-06 00:00:00 ||  3 | 2016-05-08 00:00:00 |+----+---------------------+3 rows in set (0.00 sec)mysql> select * from myisam_table2;+----+---------------------+| id | data                |+----+---------------------+|  1 | 2016-05-07 00:00:00 ||  2 | 2016-05-06 00:00:00 |+----+---------------------+2 rows in set (0.00 sec)

INSERT_METHOD的指定起作用了,如果没有指定,那么当试图往Merge表中insert数据时,都会发生错误。通常使用merge表来透明的对多个表进行查询和更新。

BerkeleyDB存储引擎

简称BDB,创建该类型的表时,会有2个数据文件,一个.frm文件存储表元数据,另一个.db文件存储数据和索引文件,类似innodb。它的实现事务安全有redo日志。在每次启动的时候,都会做一次检查操作,将所有的redo日志清空。它和Memory引擎一样,都是页级锁定。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1042888.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
百度识图网页版体验 百度识图在线查询
上一篇 2025年12月2日 05:11:21
css响应式网格gap和间距自适应
下一篇 2025年12月2日 05:11:24

相关推荐

  • Web全栈开发者如何提升技能,获得更好的就业机会?

    Web全栈开发:提升技能,拓展职业发展 如何提升Web全栈开发技能,从而获得更理想的就业机会,是许多开发者共同关注的问题。本文将探讨有效提升全栈开发能力的途径,帮助您在竞争激烈的就业市场中脱颖而出。 虽然无法提供具体的全栈学习路线图,但我们可以从编程大师的经验中汲取灵感。 (此处省略图片,但其核心思…

    2026年9月2日
    000
  • mysql怎样查询区分大小写

    mysql怎样查询区分大小写mysql怎样查询区分大小写mysql怎样查询区分大小写mysql怎样查询区分大小写

    在mysql中,可以利用binary关键字查询区分大小写,该关键字的作用就是在查询语句中区分大小写,语法为“select * from 表名 where binary 字段名 like ‘查询字段’;”。 本教程操作环境:windows10系统、mysql8.0.22版本、D…

    2026年9月2日 用户投稿
    100
  • mysql存储过程中的if怎么使用

    mysql存储过程中的if怎么使用mysql存储过程中的if怎么使用mysql存储过程中的if怎么使用mysql存储过程中的if怎么使用

    在mysql中,if语句用于根据表达式的某个条件或值结果来执行一组SQL语句,语法为“IF expression THEN statements;END IF;”;当表达式计算结果为TRUE时,将执行statements语句。 本教程操作环境:windows10系统、mysql8.0.22版本、De…

    2026年9月2日 用户投稿
    000
  • 如何高效生成自定义答题卡?

    自定义答题卡生成:技术方案及流程详解 许多应用,如考试系统和问卷调查,都需要生成个性化答题卡。本文探讨实现自定义答题卡生成的多种方案,并强调清晰描述问题的重要性。 首先,必须明确答题卡结构。这包括题目数量、题型(单选、多选、填空等)以及答案区域设计。不同的题型需要不同的答案记录方式,例如单选题只需标…

    2026年9月2日
    000
  • 怎样修改mysql时间

    怎样修改mysql时间怎样修改mysql时间怎样修改mysql时间怎样修改mysql时间

    方法:1、用“sudo cat my.cnf”命令查看“my.cnf”文件;2、用“vim mysqld.cnf”命令编辑文件内容,在文件内添加“default-time_zone = ‘+8:00’”语句;3、重启mysql使新时间生效。 本教程操作环境:windows10…

    2026年9月2日 用户投稿
    000
  • mysql怎样查询路径

    mysql怎样查询路径mysql怎样查询路径mysql怎样查询路径mysql怎样查询路径

    方法:1、利用“show variables like ‘%basedir%’;”命令查询文件基础安装路径;2、利用“show variables Like ‘%datadir%’;”命令查询数据库data的路径。 本教程操作环境:windows10系…

    2026年9月2日 用户投稿
    000
  • mysql怎样对字段求和

    在mysql中,可以利用sum()函数对字段求和,该函数的作用就是返回数值列的总数,语法为“SELECT sum(求值的字段) FROM ‘表名’”。 本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。 mysql怎样对字段求和 在mys…

    2026年9月2日
    000
  • mysql怎样查询被锁的表

    方法:1、利用“show OPEN TABLES where In_use > 0;”命令查看表被锁状态;2、利用“SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS”命令查询被锁的表。 本教程操作环境:windows10系统、mysql8.0.22版本…

    2026年9月2日
    000
  • mysql怎样查询日期范围

    在mysql中,可以利用“BETWEEN AND”关键字查询指定的日期范围,该关键字用来判断字段的数值是否在指定范围内,语法为“SELECT * FROM 表名 WHERE 字段名 between ‘时间1’ and ‘时间2’”。 本教程操作环境:w…

    2026年9月2日
    000
  • 解决并分析Incorrect datetime value报错问题

    本篇文章带大家介绍如何解决 incorrect datetime value: ‘0000-00-00 00:00:00’ 报错问题,希望对大家有所帮助。 出现原因: 这个错误发生在mysql 5.7 版本及以上版本会出现的问题:        mysql 5.7版本默认的s…

    用户投稿 2026年9月2日
    200
  • 手把手教你把MySQL的binlog玩溜

    手把手教你把MySQL的binlog玩溜手把手教你把MySQL的binlog玩溜手把手教你把MySQL的binlog玩溜手把手教你把MySQL的binlog玩溜

    本篇文章给大家带来了mysql删库和binlog的相关知识,mysql 中的日志比较重要的有 binlog、redo log以及undo log,那么跟我们本文相关的主要是binlog,希望对大家有帮助。 MySQL 中的日志比较重要的有 binlog(归档日志)、redo log(重做日志)以及 …

    2026年9月2日 用户投稿
    200
  • mysql安装完成如何导入 mysql数据恢复与导入方法指南

    mysql安装完成如何导入 mysql数据恢复与导入方法指南mysql安装完成如何导入 mysql数据恢复与导入方法指南mysql安装完成如何导入 mysql数据恢复与导入方法指南mysql安装完成如何导入 mysql数据恢复与导入方法指南

    安装完 mysql 后导入数据的方法主要有以下几种:1. 使用 mysql 命令导入 sql 文件,适用于本地已有 .sql 文件的情况,需确保服务启动并提前创建数据库;2. 使用 source 命令导入 sql 文件,适合在 mysql 客户端交互式操作,需注意文件路径和参数设置;3. 导入 cs…

    2026年9月2日 用户投稿
    100
  • 一起聊聊MySQL为啥不能用uuid做主键

    一起聊聊MySQL为啥不能用uuid做主键一起聊聊MySQL为啥不能用uuid做主键一起聊聊MySQL为啥不能用uuid做主键一起聊聊MySQL为啥不能用uuid做主键

    本篇文章给大家带来了mysql不能用uuid做主键的相关知识,mysql官方推荐不要使用uuid或者不连续不重复的雪花id,而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什不建议采用uuid,希望对大家有帮助。 前言 在mysql中设计表的时候,mysql官方推荐不要使…

    2026年9月2日 用户投稿
    100
  • 你了解MySQL中的变量、流程控制与游标?

    你了解mysql中的变量、流程控制与游标?下面本篇文章带大家了解一下mysql中的变量、流程控制与游标,希望对大家有所帮助。 1. 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。 在 MySQL 数据库中,变量分为系统变量以及用户自定…

    2026年9月2日
    400
  • 深入了解MySql中怎么用group by?(用法详解)

    深入了解MySql中怎么用group by?(用法详解)深入了解MySql中怎么用group by?(用法详解)深入了解MySql中怎么用group by?(用法详解)深入了解MySql中怎么用group by?(用法详解)

    mysql中怎么用group by?下面本篇文章给大家深入解析下group by用法,希望对大家有所帮助。 日常开发中,我们经常会使用到group by。亲爱的小伙伴,你是否知道group by的工作原理呢?group by和having有什么区别呢?group by的优化思路是怎样的呢?使用gro…

    2026年9月2日 用户投稿
    300
  • mysql怎样增加表格

    在mysql中,可以利用“CREATE TABLE”语句增加表格,该语句的作用就是创建数据库中的表,利用该语句还可以规定列可容纳的数据类型,语法为“CREATE TABLE 表名称(列名称1 数据类型,列名称2 数据类型,..)”。 本教程操作环境:windows10系统、mysql8.0.22版本…

    2026年9月2日
    100
  • 如何用MySQL查询每个学生最近一次考试的最高分?

    MySQL高效查询学生最近一次考试最高分 本文介绍如何使用MySQL查询每个学生最近一次考试的最高分。 我们将使用窗口函数来实现高效的查询。 以下SQL语句可以实现该功能: SELECT id, student_id, score, dateFROM ( SELECT *, ROW_NUMBER()…

    2026年9月2日
    300
  • 怎样查询mysql状态

    怎样查询mysql状态怎样查询mysql状态怎样查询mysql状态怎样查询mysql状态

    在mysql中,可以利用“show status”命令查询mysql状态,该命令用于查看服务器的状态信息,该命令会显示每个服务器变量的名字和值,状态变量是只读的,语法为“show status”。 本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。 怎样查询my…

    2026年9月2日 用户投稿
    200
  • mysql怎样查询一列

    在mysql中,可以利用SELECT语句来查询一列的数据,该语句的作用就是查询指定条件的数据,语法为“select 列名1,列名2… from 表名”。 本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。 mysql怎样查询一列 MySQL 数据库使…

    2026年9月2日
    200
  • mysql怎样多列求和

    mysql怎样多列求和mysql怎样多列求和mysql怎样多列求和mysql怎样多列求和

    在mysql中,可以利用sum()函数进行多列求和,该函数能够返回数值列的总数,语法为“SELECT SUM(列1+列2+列3…) FROM table_name;”。 本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。 mysql怎样多列求和 SU…

    2026年9月2日 用户投稿
    100

发表回复

登录后才能评论
关注微信