最新要闻
- ST万林:业绩说明会定于6月14日举行
- 世界今日报丨北京建材市场哪里最好_北京建材市场
- 环球速讯:百色受贿罪如何判刑
- 搭载2.0T+采埃孚8AT,郑州日产全新帕拉丁官图发布
- 360创始人周鸿祎离婚 6.25%公司股份已转让胡欢:价值68亿_环球快资讯
- 世界微资讯!2023年第一个弄丢证件的考生出现了:结局暖心
- 环球速看:中国进攻性增强?外交部:真相是美国军机不远万里跑到中国家门口挑衅
- 实时焦点:君实生物跌5%创新低 2020年上市即巅峰两募资共86亿
- 光水面钓鱼如何做支架_做支架的方法介绍
- 星巴克星享卡多少钱 星巴克星享卡_天天快消息
- 天天简讯:亚洲电视宣布开启电商直播业务
- 天天视点!绝味食品(603517.SH)拟每股派0.18元 于6月14日分红
- 黄埔文冲承接6+2艘1250TEU甲醇双燃料敞口集装箱船
- 伏击换武器宏怎么用_伏击换武器宏 今日最新
- 被大王具足虫拉面吓哭:看着像是把异形幼崽放在碗里!
- 【环球速看料】仅990g!华硕发布ExpertBook B9 OLED商务本:镁锂合金打造
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
MySQL存储引擎_新视野
一:存储引擎概念
存储引擎其实就是对于数据库文件的一种存取机制,如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。MySQL中的数据用各种不同的方式存储在文件(或内存)中,每一种存储的方式都使用不同的存储机制,索引技巧等,最终提供广泛的不同功能和能力。在MySQL中将这些不同的技术及配套的相关功能称为存储引擎。
1:MySQL逻辑架构
这里主要注意引擎层,因为本文主要围绕索引展开,具体的MySQL逻辑架构参考:MySQL逻辑架构及执行过程第一层:连接层,所包含的服务并不是MySQL所独有的技术。它们都是服务于C/S程序或者是这些程序所需要的:连接处理,身份验证,安全性等。第二层:服务层,这是MySQL的核心部分。通常叫做SQL Layer。在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权 限判断,sql解析,行计划优化,query cache的处理以及所有内置的函数(如日期,时间,数学运算,加密)等等。各个存储引擎提供的 功能都集中在这一层,如存储过程,触发器,视图等。第三层:引擎层。通常叫做StorageEngine Layer,也就是底层数据存取操作实现部分,由多种存储引擎共同组成。它们负责存储和获取所有 存储在MySQL中的数据。就像Linux众多的文件系统一样。每个存储引擎都有自己的优点和缺陷。服务器是通过存储引擎API来与它们交 互的。这个接口隐藏了各个存储引擎不同的地方。对于查询层尽可能的透明。这个API包含了很多底层的操作。如开始一个事物,或者取 出有特定主键的行。存储引擎不能解析SQL,互相之间也不能通信。仅仅是简单的响应服务器的请求。第四层:存储层。将数据存储在文件系统上,并完成与存储引擎的交户。
二:MySQL查询与修改引擎
1:查询支持的存储引擎
可以通过SQL命令查看支持的存储引擎:SHOW engines;+--------------------+---------+------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+------------------+--------------+------+------------+ | ndbcluster | NO | Clustered, fau...| NULL | NULL | NULL | | FEDERATED | NO | Federated MySQ...| NULL | NULL | NULL | | MEMORY | YES | Hash based, st...| NO | NO | NO | | InnoDB | DEFAULT | Supports trans...| YES | YES | YES | | PERFORMANCE_SCHEMA | YES | Performance Sc...| NO | NO | NO | | MyISAM | YES | MyISAM storage...| NO | NO | NO | | ndbinfo | NO | MySQL Cluster ...| NULL | NULL | NULL | | MRG_MYISAM | YES | Collection of ...| NO | NO | NO | | BLACKHOLE | YES | /dev/null stor...| NO | NO | NO | | CSV | YES | CSV storage en...| NO | NO | NO | | ARCHIVE | YES | Archive storag...| NO | NO | NO | +--------------------+---------+------------------+--------------+------+------------+字段说明Engine:存储引擎名称Support:是否支持该引擎以及该引擎是否为默认存储引擎,YES表示支持,NO表示不支持,DEFAULT表示默认引擎Comment:存储引擎的简单介绍Transactions:表示该引擎是否支持事务XA:说明该存储引擎是否支持分布事务Savepoints:说明该存储引擎是否支持部分事务回滚
2:修改系统默认的存储引擎
查询会话级别的默认存储引擎:SHOW SESSION VARIABLES LIKE "default_storage_engine"; SELECT @@SESSION.default_storage_engine; +----------------------------------+ | @@SESSION.default_storage_engine | +----------------------------------+ | InnoDB | +----------------------------------+Ⅰ:临时修改全局(系统级别)的存储引擎: SET @@GLOBAL.default_storage_engine=MyISAM; SELECT @@GLOBAL.default_storage_engine; +---------------------------------+ | @@GLOBAL.default_storage_engine | +---------------------------------+ | MyISAM | +---------------------------------+Ⅱ:临时修改会话级别的存储引擎: SET @@SESSION.default_storage_engine=MyISAM; SELECT @@SESSION.default_storage_engine; +---------------------------------+ | @@SESSION.default_storage_engine| +---------------------------------+ | MyISAM | +---------------------------------+Ⅲ:修改my.cnf配置文件(全局修改,需要重启MySQL服务): [mysqld] default-storage-engine=引擎名字使用vim修改后务必重启MySQL:systemctl.mysqld
3:设置表的存储引擎
存储引擎是负责对表中的数据进行提取和写入工作的,我们可以为不同的表设置不同的存储引擎,也就是说不同的表可以有不同的物理存储结构,不同的提取和写入方式。
创建表基本语法:CREATE TABLE [IF NOT EXISTS] [数据库名.]表名( 字段1, 数据类型 [约束条件] [默认值] [字段备注信息], 字段1, 数据类型 [约束条件] [默认值] [字段备注信息], 字段1, 数据类型 [约束条件] [默认值] [字段备注信息], ... [表约束条件] )[表字符集][表校对集] [表存储引擎];创建表示例: CREATE DATABASE dbtest1; CREATE TABLE IF NOT EXISTS dbtest1.student( sid INT(4) PRIMARY KEY AUTO_INCREMENT COMMENT "主键ID", sname VARCHAR(6) NOT NULL COMMENT "姓名", ssex ENUM("男","女") DEFAULT "男" COMMENT "性别", sage INT(4) COMMENT "年龄" )CHARACTER SET UTF8 COLLATE utf8_general_ci ENGINE INNODB; 查询创建表的存储引擎:SHOW CREATE TABLE dbtest1.student\G *************************** 1. row *************************** Table: student Create Table: CREATE TABLE `student` ( `sid` int NOT NULL AUTO_INCREMENT COMMENT "主键ID", `sname` varchar(6) NOT NULL COMMENT "姓名", `ssex` enum("男","女") DEFAULT "男" COMMENT "性别", `sage` int DEFAULT NULL COMMENT "年龄", PRIMARY KEY (`sid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3注:UTF8默认就是utf8mb3 注:创建数据库时是不存在存储引擎设置的 补充: 也可以使用查询表状态SQL语句:SHOW TABLE STATUS LIKE "表名"; 严谨点就是查询某一数据库下的某一表:SHOW TABLE STATUS FROM 数据库名 WHERE name = "表名";修改表存储引擎: ALTER TABLE dbtest1.student ENGINE MyISAM;
三:部分存储引擎介绍
1:InnoDB引擎(重要)
InnoDB是一个事务型存储引擎,提供了对数据库ACID事务的支持,并实现了SQL标准的四种隔离级别,具有行级锁定(这一点说明锁的粒度小,在写数据时,不需要锁住整个表,因此适用于高并发情形)及外键支持(所有数据库引擎中仅有它支持外键);该引擎的设计目标便是处理大容量数据的数据库系统,MySQL在运行时InnoDB会在内存中建立缓冲池,用于缓存数据及索引。
【资料图】
具体说明:①:MySQL从3.23.34开始就包含InnoDB存储引擎。MySQL5.5及之后版本,默认采用InnoDB引擎。 ②:InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。 可以确保事务的完整提交(Commit)和回滚(Rollback)。 ③:除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎。 ④:除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。 ⑤:InnoDB的数据文件结构不同:参考MySQL数据目录⑥:InnoDB是为处理巨大数据量的最大性能设计 ⑦:对比MyISAM的存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保存数据和索引。 ⑧:MyISAM只缓存索引,不缓存真实数据;InnoDB不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响缺点:①:该引擎不支持FULLTEXT类型的索引; ②:没有保存表的行数,在执行SELECT COUNT(*) FROM表名时,需要遍历扫描全表,而MyISAM支持保存表行数;适用场景:①:经常需要更新的表,适合处理多重并发的更新请求; ②:支持事务和外键约束; ③:可以从灾难中恢复(通过bin-log日志等) ④:支持自动增加列属性auto_increment
2:MyISAM引擎
MyISAM引擎是MySQL主流引擎之一,但它相比起InnoDB,没有提供对数据库事务的支持,不支持细粒度的锁(行锁)及外键,当表INSERT与UPDATE时需要锁定整个表,因此效率会低一些,在高并发时可能会遇到瓶颈;但MyISAM引擎独立与操作系统,可以在Windows及Linux上使用,这说明可以轻松的将其从Windows移植到Linux上,每当我们建立一个MyISAM引擎表时,就会在本地磁盘创建三个文件,文件名就是表名(如创建tb_demo表):tb_demo.frm存储表定义、tb_demo.MYD存储数据、tb_demo.MYI存储索引。
具体说明:①:MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务、行级锁、外键, 但有个严重问题就是崩溃后无法安全恢复。 ②:MySQL5.5版本之前默认的存储引擎就是MyISAM。 ③:主要优势是访问的速度快,对事务完整性没有要求或者以SELECT、INSERT为主则使用MyISAM。 ④:针对数据统计有额外的常数存储。故而 COUNT(*) 的查询效率很高。 ⑤:MyISAM的数据文件结构不同:参考MySQL数据目录⑥:该存储引擎下主要以读为主的业务场景缺点:①:若数据库服务发生宕机后导致表损坏则不能安全恢复数据。适用场景:①:MyISAM极度强调快速读取 ②:MyIsam表中自动存储了表的行数,需要时直接获取即可 ③:适用于不需要事物支持、外键功能、及需要对整个表加锁的情形
3:Memory(Heap)引擎
Memory采用的逻辑介质是内存,每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常得快,它的数据是放在内存中的,并且默认使用HASH索引。但是当mysqld守护进程崩溃或关闭的时候,数据会丢失。HEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MYISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。Memory同时支持散列索引和B树索引,B树索引可以使用部分查询和通配查询,也可以使用<,>和>=等操作符方便数据挖掘,散列索引相等的比较快但是对于范围的比较慢很多。
具体说明:①:Memory同时支持哈希(HASH)索引和B+树索引。 ②:Memory表至少比MyISAM表要快一个数量级。 ③:Memory表的大小是受到限制的。表的大小主要取决于两个参数,分别是max_rows和max_heap_table_size。 其中max_rows可以在创建表时指定;max_heap_table_size的大小默认为16MB,可以按需要进行扩大。 ③:数据文件与索引文件分开存储。 查询表的大小: SHOW SESSION VARIABLES LIKE "max_heap_table_size"; +---------------------+----------+ | Variable_name | Value | +---------------------+----------+ | max_heap_table_size | 16777216 | +---------------------+----------+ 创建测试: CREATE TABLE t1(id INT PRIMARY KEY, c INT) engine=Memory MAX_ROWS=3;缺点:①:要求存储的数据是数据长度不变的格式,Blob和Text类型数据不可用(长度不固定) ②:数据易丢失,生命周期短;用完表格后表格便被删除适用场景:①:那些内容变化不频繁的代码表,或者作为统计操作的中间结果表,便于高效地对中间结果进行分析并得到最终的统计结果 ②:目标数据比较小,而且非常频繁的进行访问,在内存中存放数据,如果太大的数据会造成内存溢出。 ③:数据是临时的,而且必须立即能取出用到,于是可存放在内存中 ④:存储在Memory表中的数据如果突然间丢失的话也没有太大的关系
四:MyISAM和InnoDB对比
MySQL5.5之前的默认存储引擎是MyISAM(MyISAM是由早期的ISAM改良的),5.5之后改为了InnoDB。
对比项 | MyISAM | InnoDB |
外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行表锁 | 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 | 行锁,操作时只锁某一行,不对其它行有影响,适合高并发的操作 |
缓存 | 只缓存索引,不缓存真实数据 | 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大 小对性能有决定性的影响 |
自带系统表使用 | Y | N |
关注点 | 性能:节省资源、消耗少、简单业务 | 事务:并发写、事务、更大资源 |
默认安装 | Y | Y |
默认使用 | N | Y |
.
关键词:
MySQL存储引擎_新视野
ST万林:业绩说明会定于6月14日举行
公募REITs市场价格下行 无碍长期配置价值凸显
世界今日报丨北京建材市场哪里最好_北京建材市场
环球速讯:百色受贿罪如何判刑
搭载2.0T+采埃孚8AT,郑州日产全新帕拉丁官图发布
360创始人周鸿祎离婚 6.25%公司股份已转让胡欢:价值68亿_环球快资讯
世界微资讯!2023年第一个弄丢证件的考生出现了:结局暖心
环球速看:中国进攻性增强?外交部:真相是美国军机不远万里跑到中国家门口挑衅
实时焦点:君实生物跌5%创新低 2020年上市即巅峰两募资共86亿
Vue 生命周期
关于Cloud-云上的磁盘的创建与在操作系统OS中的使用
光水面钓鱼如何做支架_做支架的方法介绍
星巴克星享卡多少钱 星巴克星享卡_天天快消息
天天简讯:亚洲电视宣布开启电商直播业务
天天视点!绝味食品(603517.SH)拟每股派0.18元 于6月14日分红
黄埔文冲承接6+2艘1250TEU甲醇双燃料敞口集装箱船
伏击换武器宏怎么用_伏击换武器宏 今日最新
被大王具足虫拉面吓哭:看着像是把异形幼崽放在碗里!
【环球速看料】仅990g!华硕发布ExpertBook B9 OLED商务本:镁锂合金打造
科大讯飞:将在6月9日发布“讯飞星火认知大模型”V1.5
鲁大师5月新机性能/流畅榜出炉:iQOO险胜OPPO成功夺冠_环球今头条
龙虎榜|4机构卖出2.2亿元南网储能,炒股养家出逃杭州热电,方新侠打板合力泰 环球新消息
世界观点:挪威政府批准Aker BP在北海的开发计划
生产研发部管理制度范文 生产研发部管理制度
每日热议!保定赶集网二手房_保定赶集网
环球热讯:湖南长沙开福一39岁男子驾驶面包车连撞9人,肇事后弃车逃跑,开福官方:已落网
配偶的兄弟姐妹称谓怎么填_配偶的兄弟姐妹称谓|环球快看点
焦点滚动:重庆看红叶哪个景点更好 重庆看红叶最好的地方
美国防部授予普惠价值20亿美元的新批次F-35发动机合同
挣个辛苦钱 印度农民为保庄稼雇人扮熊:工作9小时收入21元
iPadOS 17支持机型公布:苹果放弃三款经典平板
世界讯息:2.5万元苹果Vision Pro头显发布引热议:有网友直呼抢钱
半成品都不算?苹果Vision Pro到底有多坑
创新双摄玩法、门前一览无遗!萤石Y3000FVX极光人脸视频锁双摄版评测
大宗交易:长江电力成交7812万元,成交价22.32元(06-06)_今日视点
苹果MR概念股齐跌不改冠石科技涨势 有股东借机套现超3000万元_当前速讯
倩女幽魂电影下载迅雷_倩女幽魂电影下载|世界最资讯
一个月瘦三十斤?这款“药”狂卖1亿元?真的那么神奇吗?_环球热点
焦点播报:挪威政府批准Aker BP在北海的开发计划
Spring框架中事务控制的运行原理|全球速递
世界视讯!盐城供电开发区供服中心:精准治理线损 助力提质增效
多地金融监管开展调研 摸底信贷需求、房地产市场、金融风险变化等情况 每日速递
电壁挂炉取暖十大品牌_电壁挂炉十大品牌_全球快播
世界快资讯丨黄金树_黄金树立誓
销量连年下滑 上汽大众第一工厂永久关停?官方回应
白色攒机首选!七彩虹CVN B650 GAMING FROZEN V14主板图赏
男孩被撞身亡母亲因“太冷静”被网暴跳楼!这有错吗? 最新
淄博一烧烤城20多家商户为考生闭店 商户:烧烤城空荡荡但很值得
高三生考前在教室门口排队顶粽子:美好寓意“高中”
大宗交易:东望时代成交3172.5万元,折价0.22%(06-06) 快看
快资讯:西媒:皇马有意黄潜右边锋楚克乌泽 本赛季13球11助 3次攻破皇马
ESMap 三维地图引擎在公路隧道的应用 - 智慧公路隧道数字孪生
STM32F429 Discovery开发板应用:实现USB虚拟串口(VPC)
关于SQL语句中-使用正则的方式匹配-排除包含任意字母点两个字符的字符串
播报:罗马诺:皇马已向纳乔发送续约文件,球员告知国米他不会加盟
辽宁省62个地理标志产品入选《中国地理标志产品英文宣传册》 每日快播
每日机构分析:6月6日_全球关注
凌志软件(688588)6月6日主力资金净卖出1159.81万元 当前视点
焦点速看:专家共话未成年人数据保护,小天才分享内容安全保护等功能设计!
vlc设置访问输出模块为ftp教程
每日消息!价格超3万元 Mac Studio明天预售:苹果最强芯片M2 Ultra加持
全球快看:小鹏找林志颖代言是不是好点子?高管回应:当然是
苹果Vision Pro头显会颠覆XR行业吗?HTC王雪红:重大分水岭_天天消息
全电池驱动、零污染 我国新能源轻轨车辆首次出口海外-全球快讯
行业首创双水泵!超频三金刚双擎DE水冷散热器图赏 天天信息
越博动力业绩预告不准确,公司及财务总监收警示函-每日看点
每日热文:满负荷生产是什么意思计算公式(猪场满负荷生产是什么意思)
上行动能走弱 债市调整压力渐显
厦门疾控:本月谨防登革热和手足口病
全日空首席执行官希望增加波音787订购数量
天天时讯:易基因:小檗碱通过介导m6A mRNA甲基化调控斑马鱼肝细胞氧化应激、凋亡和自噬
Vue2知识点简要
一朝学信奥,十年也难跑
当前观点:Unity框架中的核心类
近13万汉藏对照词典汉藏翻译ACCESS\EXCEL数据库
广西发改委:地方政府不对国企债务承担偿债责任-当前热讯
做好“加减法” 增粮有实招——部分粮食主产区一线扫描
香港总商会将香港今年GDP增长预测上调至4.2%
环球观天下!祝高考生前程似锦的句子
特斯拉索赔500万元案开庭 车顶维权女车主当庭反诉
卢伟冰给高考生几个小建议 米粉看完后信心满满_当前看点
全球观天下!河北一过山车停电多名游客倒挂半空:备用电源启用后均平安下车
你买了吗?广东一公司进口日本核辐射食品被罚1万:大多已售出
世界热点!电梯突发故障丈夫下意识护妻儿:家人身体无大碍
中国气象局:我国已进入主汛期和灾害多发期 要加强临灾预警
java springboot整合elasticsearch时关于LocalDateTime处理的方式
昇腾实战丨DVPP媒体数据处理图片解码问题案例
每日头条!实际薪资水平低迷引发前景担忧 日债收益率周二普遍回落
【新华500】新华500指数(989001)6日跌1%
最高可抵6000元!苹果宣布Mac Studio等设备加入换购计划
今日讯!大厂中第一个对标ChatGPT 百度文心一言2个月来性能已提高50倍
拼了!35岁男子为考清华复读14年:没浪费教育资源 奖金仅够生活-天天快播
淄博夜空500架无人机助力高考:为学子加油 当前速递
聚焦:“牧马人同款大皮卡”全新Jeep角斗士谍照曝光
科林电气:中标3个国家电网采购项目,中标总金额约9475万元_新动态
环球观天下!在 Windows 系统上,你可以使用 Certbot 生成 Let's Encrypt 的泛域名证书。以下是具体步骤
焦点速看:如何让你的结构体更高效
【专为苛刻的数据环境而构建】上海道宁为您带来世界上先进的矢量原生、时间序列和实时分析数据库——kdb系列产品|世界新消息
天天快消息!提升生产线效率与质量:智慧工厂的优势与应用