位置: 编程技术 - 正文

MySQL数据库三种常用存储引擎特性对比(mysql数据库三种复制类型)

编辑:rootadmin

推荐整理分享MySQL数据库三种常用存储引擎特性对比(mysql数据库三种复制类型),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql数据库三种备份方式是什么,mysql数据库三种备份方式是什么,mysql数据库有哪些类型,mysql数据库三种备份和恢复,mysql数据库三种备份和恢复,mysql数据库三种备份方式是什么,mysql数据库三种备份方式是什么,mysql数据库三种备份和恢复,内容如对您有帮助,希望把文章链接给更多的朋友!

MySQL 的存储引擎可能是所有关系型数据库产品中最具有特色的了,不仅可以同时使用多种存储引擎,而且每种存储引擎和MySQL之间使用插件方式这种非常松的耦合关系。

由于各存储引擎功能特性差异较大,这篇文章主要是介绍如何来选择合适的存储引擎来应对不同的业务场景。

MyISAM

特性不支持事务:MyISAM存储引擎不支持事务,所以对事务有要求的业务场景不能使用表级锁定:其锁定机制是表级索引,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能读写互相阻塞:不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读只会缓存索引:MyISAM可以通过key_buffer缓存以大大提高访问性能减少磁盘IO,但是这个缓存区只会缓存索引,而不会缓存数据

适用场景不需要事务支持(不支持)并发相对较低(锁定机制问题)数据修改相对较少(阻塞问题)以读为主数据一致性要求不是非常高

最佳实践尽量索引(缓存机制)调整读写优先级,根据实际需求确保重要操作更优先启用延迟插入改善大批量写入性能尽量顺序操作让insert数据都写入到尾部,减少阻塞分解大的操作,降低单个操作的阻塞时间降低并发数,某些高并发场景通过应用来进行排队机制对于相对静态的数据,充分利用Query Cache可以极大的提高访问效率MyISAM的Count只有在全表扫描的时候特别高效,带有其他条件的count都需要进行实际的数据访问

InnoDB

MySQL数据库三种常用存储引擎特性对比(mysql数据库三种复制类型)

特性具有较好的事务支持:支持4个事务隔离级别,支持多版本读行级锁定:通过索引实现,全表扫描仍然会是表锁,注意间隙锁的影响读写阻塞与事务隔离级别相关具有非常高效的缓存特性:能缓存索引,也能缓存数据整个表和主键以Cluster方式存储,组成一颗平衡树所有Secondary Index都会保存主键信息

适用场景需要事务支持(具有较好的事务特性)行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引完成数据更新较为频繁的场景数据一致性要求较高硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,尽可能减少磁盘 IO

最佳实践主键尽可能小,避免给Secondary index带来过大的空间负担避免全表扫描,因为会使用表锁尽可能缓存所有的索引和数据,提高响应速度在大批量小插入的时候,尽量自己控制事务而不要使用autocommit自动提交合理设置innodb_flush_log_at_trx_commit参数值,不要过度追求安全性避免主键更新,因为这会带来大量的数据移动

NDBCluster

特性分布式:分布式存储引擎,可以由多个NDBCluster存储引擎组成集群分别存放整体数据的一部分支持事务:和Innodb一样,支持事务可与mysqld不在一台主机:可以和mysqld分开存在于独立的主机上,然后通过网络和mysqld通信交互内存需求量巨大:新版本索引以及被索引的数据必须存放在内存中,老版本所有数据和索引必须存在与内存中

适用场景具有非常高的并发需求对单个请求的响应并不是非常的critical查询简单,过滤条件较为固定,每次请求数据量较少,又不希望自己进行水平Sharding

最佳实践尽可能让查询简单,避免数据的跨节点传输尽可能满足SQL节点的计算性能,大一点的集群SQL节点会明显多余Data节点在各节点之间尽可能使用万兆网络环境互联,以减少数据在网络层传输过程中的延时

注:以上三个存储引擎是目前相对主流的存储引擎,还有其他类似如:Memory,Merge,CSV,Archive等存储引擎的使用场景都相对较少,这里就不一一分析了。

mysql版本5.5.x升级到5.6.x步骤分享 大概步骤是:把配置文件添加:skip-grant-tables参数,把basedir升级成新版本,启动mysql,执行命令:mysql_upgrade升级一下字典信息,然后flushprivileges;刷新授

Mysql IO 内存方面的优化 这里使用的是mysqlVer.Distrib5.6.,forLinux(i)usingEditLinewrapper一、mysql目录文件ibdata1:系统表空间包含数据字典、回滚日志/undolog等(insertbuffersegment/doublewr

Mysql忘记root密码怎么办 MySQL有时候忘记了root密码是一件伤感的事,这种情况下,如何重置root的密码呢找到并编辑mysql的my.ini配置文件,在mysqld节点中添加上skip-grant-table.如下:#T

标签: mysql数据库三种复制类型

本文链接地址:https://www.jiuchutong.com/biancheng/312476.html 转载请保留说明!

上一篇:MySQL中的行级锁、表级锁、页级锁(mysql行锁的作用)

下一篇:mysql版本5.5.x升级到5.6.x步骤分享

  • SQL Server 数据库分离与附加 就这么简单!(sqlserver数据库和mysql区别)

    5. 在下图的分离数据库窗口中列出了我们要分离的数据库名称。请选中“更新统计信息”复选框。若“消息”列中没有显示存在活动连接,则“状态”列显示为“就绪”;否则显示“未就绪”,此时必须勾选“删除连接”列的复选框。

    6. 分离数据库参数设置完成后,单击底部的”确定”按钮,就完成了所选数据库的分离操作。这时在对象资源管理器的数据库对象列表中就见不到刚才被分离的数据库名称student_Mis了(如下图)。

    三、附加数据库

    1. 将需要附加的数据库文件和日志文件拷贝到某个已经创建好的文件夹中。出于教学目的,我们将该文件拷贝到安装SQL Server时所生成的目录DATA文件夹中。

    2. 在下图窗口中,右击数据库对象,并在快捷菜单中选择“附加”命令,打开“附加数据库”窗口。

    3. 在“附加数据库”窗口中,单击页面中间的“添加”按钮,打开定位数据库文件的窗口,在此窗口中定位刚才拷贝到SQL Server的DATA文件夹中的数据库文件目录(数据文件不一定要放在“DATA”目录中),选择要附加的数据库文件(后缀.MDF,如下图)。

    4. 单击“确定”按钮就完成了附加数据库文件的设置工作。这时,在附加数据库窗口中列出了需要附加数据库的信息(如下图)。如果需要修改附加后的数据库名称,则修改“附加为”文本框中的数据库名称。我们这里均采用默认值,因此,单击确定按钮,完成数据库的附加任务。

    完成以上操作,我们在SSMS的对象资源管理器中就可以看到刚刚附加的数据库student_Mis (如下图)。

    以上操作可以看出,如果要将某个数据库迁移到同一台计算机的不同SQL Server实例中或其它计算机的SQL Server系统中,分离和附加数据库的方法是很有用的。

    深入浅析SQL封装、多态与重载 面向对象1.类:众多对象抽象出来的2.对象:类实例化出来的3.类的定义关键字class4.类里面包含成员变量成员属性成员方法5.面向对象三大特性(1)封装

    在Sql Server中调用外部EXE执行程序引发的问题 一、先开启xp_cmdshell打开外围应用配置器—功能的外围应用配置器—实例名DatabaseEnginexp_cmdshell—启用二、解决方法usemasterExecxp_cmdshell'mkdird:csj" class="img-responsive" alt="SQL Server 数据库分离与附加 就这么简单!(sqlserver数据库和mysql区别)">

    SQL Server 数据库分离与附加 就这么简单!(sqlserver数据库和mysql区别)

  • sql查看所有表大小的方法(sql查看所有数据表)

    sql查看所有表大小的方法(sql查看所有数据表)

  • Win10右键菜单弹出很慢怎么办?Win10右键弹出菜单卡顿的解决方法(win10右键自动弹出)

    Win10右键菜单弹出很慢怎么办?Win10右键弹出菜单卡顿的解决方法(win10右键自动弹出)

  • Fedra7 建立DHCP服务器(怎么建立dhcp服务器)

    Fedra7 建立DHCP服务器(怎么建立dhcp服务器)

  • fpxpress.exe是什么进程 有什么作用 fpxpress进程查询(fpx是什么文件格式)

    fpxpress.exe是什么进程 有什么作用 fpxpress进程查询(fpx是什么文件格式)

  • 在Linux下禁用IPv6的方法小结(linux如何关闭ipv6防火墙)

    在Linux下禁用IPv6的方法小结(linux如何关闭ipv6防火墙)

  • Lesson01_07  图像标签(图像而已)

    Lesson01_07 图像标签(图像而已)

  • 详解Shell cut用法(shell section)

    详解Shell cut用法(shell section)

  • 解决js函数闭包内存泄露问题的办法(js闭包作用问题解决应用)

    解决js函数闭包内存泄露问题的办法(js闭包作用问题解决应用)

  • Python实现字典依据value排序(python中字典怎么用)

    Python实现字典依据value排序(python中字典怎么用)

  • python append、extend与insert的区别

    python append、extend与insert的区别

  • 非税收入未上缴
  • 上月多计提增值税
  • 2个公司的法人是谁
  • 建账的主要流程
  • 经营许可证要交税吗
  • 红冲发票需要收回原发票政策
  • 外贸公司报关员是干什么的
  • 缴纳税金属于什么会计分录
  • 外贸企业视同内销进项可以抵扣吗
  • 净值的公式
  • 非货币性资产交换的会计处理
  • 净水设备配件计算方法
  • 缴纳增值税金税率是多少
  • 一次性医保补助多少钱
  • 取得农产品流通环节免税发票可以扣抵吗?
  • 保安公司怎样上保险
  • 公司员工体检计入什么科目
  • 金税盘领用发票查询不到
  • 以前年度损益对应的科目
  • 发票已认证开票方未报税要怎么作废?
  • 不锈钢材料开票
  • 税务机关代码不能为空怎么解决
  • 金蝶k3迷你版年度结账
  • 外聘老师课时费计入什么科目
  • profiler.exe - profiler是什么进程 有什么用
  • 周转材料属于什么会计分录
  • 去实体店装win10专业版多少钱
  • 苹果6手机锁屏
  • linux和windows关系
  • 接的网线影响传输吗
  • 固定资产已提完折旧,但仍在使用,需要定期清理吗?
  • vue-router跳转
  • 应付账款挂账会计分录
  • 私有化部署chatGPT,告别网络困扰
  • php怎么输出文字
  • 如何自定义smartart
  • 税款入库期是什么意思
  • 定额发票在哪查真伪
  • python字典操作 遍历
  • dedecms更新
  • 公司被吊销营业执照的法律后果是什么?
  • sql server 2008怎么用
  • 销售公司的主营业务成本怎么算
  • 劳务报酬支出怎么算
  • 现金解款单是什么
  • 销售退回如何做账务处理
  • 增加固定资产原值后折旧
  • 员工报销医药费怎么做会计分录
  • 申请个税退税账号是什么
  • 无偿赠送他人产品,会计分录怎么写
  • 预计负债可以获取利润吗
  • 工程不交税
  • 借款收据怎样才有法律效力
  • 发票专用章盖在中间行不行
  • 租赁写字楼的需求有哪些
  • 固定资产计提折旧的会计科目
  • mysql coalesce函数用法
  • ubuntu20.04怎么样
  • linux命令提示符不见了
  • 网络硬盘在哪
  • ubuntu nm
  • 默认终端地址
  • gnaupdaemon.exe是什么
  • linux 安装jmap
  • gnuradio编写模块
  • win10收不到20h2更新
  • win7旗舰版64位系统无法进入安全模式怎么办?
  • win10局域网无法上网
  • Extjs gridpanel 出现横向滚动条问题的解决方法
  • Nodejs Express4.x开发框架随手笔记
  • cocos2d怎么用
  • java dao框架
  • Node.js中的construct构造函数
  • [置顶]游戏名 TentacleLocker
  • jquery.validate提示错误信息位置方法
  • jquery悬浮显示
  • jquery将文本框设置为只读
  • 江苏省税务局官网电话
  • 纳税人满意度调查问卷
  • 社保欠缴可以放弃吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设