热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

08nosqlmysql优化第一天innodb存储引擎

2、innodb存储引擎5.5版本中默认的存储引擎,MySql推荐使用的存储引擎。提供事务,行级锁定,存储引擎。事务安全型存储引擎&


2、innodb存储引擎

>=5.5 版本中默认的存储引擎,MySql推荐使用的存储引擎。提供事务,行级锁定,存储引擎。

事务安全型存储引擎,更加注重数据的完整性和安全性。


(1)存储格式:

innodb存储引擎  每个数据表有单独的“结构文件”  *.frm

数据索引集中存储,存储于同一个表空间文件ibdata1

ibdata1就是InnoDB表的共享存储空间,默认innodb所有表的数据都在一个ibdata1里。

创建innodb表后,存在文件如下:


create table t1(id int,name varchar(32)) engine innodb charset utf8;


 


.frm表结构文件。



innodb表空间文件:存储innodb的数据和索引。

ibdata1


 

默认,所有的 innodb表的数据索引在同一个表空间文件中,

通过配置可以达到每个innodb的表对应一个表空间文件。


show  variables   like 'innodb_file_per_table%'


开启该配置:

set  global  innodb_file_per_table=1;

创建一个innodbd的表进行测试使用。

查看表对应的文件自己独立的“数据/索引”文件

系统配置参数innodb_file_per_table后期无论发生任何变化,t2都有自己独立的“数据/索引”文件。

注意:相比较之下,使用独占表空间的效率以及性能会更高一点。

注意:innodb数据表不能直接进行文件的复制/粘贴进行备份还原,可以使用如下指令:

 

备份数据库的指令


> mysqldump  -uroot -p密码  数据库名字 > f:/文件名称.sql  [备份]



> mysql -uroot  -p密码 数据库   <  f:/文件名称.sql  [还原] 



(2)数据是按照主键顺序存储。

该innodb数据表,数据的写入顺序存储的顺序不一致,需要按照主键的顺序把记录摆放到对应的位置上去,速度比Myisam的要稍慢


create table t3(

id int primary key auto_increment,

name varchar(32) not null

)engine innodb charset utf8;

insert into t3 values(223,&#39;刘备&#39;),(12,&#39;张飞&#39;),(162,&#39;张聊&#39;),(1892,&#39;网飞&#39;);


给innodb数据表写入4条记录信息(主键id值顺序不同)

插入时做排序工作,效率低。

 


(3)并发处理:

擅长处理并发的。

行级锁定(row-level locking),实现了行级锁定,在一定情况下,可以选择行级锁来提升并发性,也支持表级锁定,innodb根据操作选择。

锁机制:

当客户端操作表(记录)时,为了保证操作的隔离性(多个客户端操作不能相互影响),通过加锁来处理。

操作方面:

读锁:读操作时增加的锁,也叫共享锁,S-lock。特征是所有人都只可以读,只有释放锁之后才可以写。

写锁:写操作时增加的锁,也叫独占锁或排他锁,X-lock。特征,只有锁表的客户可以操作(读写)这个表,其他客户读都不能读。

办公室开会锁上门。

锁定粒度(范围)

表级锁:开销小,加锁快,发生锁冲突的概率最高,并发度最低。myisam和innodb都支持。

行级锁:开销大,加锁慢,发生锁冲突的概率最低,并发度也最高。innodb支持


推荐阅读
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • Nacos 0.3 数据持久化详解与实践
    本文详细介绍了如何将 Nacos 0.3 的数据持久化到 MySQL 数据库,并提供了具体的步骤和注意事项。 ... [详细]
  • Docker 环境下 MySQL 双主同步配置指南
    本文介绍了如何在 Docker 环境中配置 MySQL 的双主同步,包括目录结构的创建、配置文件的编写、容器的创建与设置以及最终的验证步骤。 ... [详细]
  • MySQL Server 8.0.28 升级至 8.0.30 的详细步骤
    为了修复安全漏洞,本文档提供了从 MySQL Server 8.0.28 升级到 8.0.30 的详细步骤,包括备份数据库、停止和删除旧服务、安装新版本以及配置相关环境变量。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文介绍了在 MySQL 中如何使用正则表达式来提高查询效率,通过具体示例展示了如何筛选包含中文字符的记录,并详细解释了正则表达式的各种特殊字符和结构。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 开发心得:利用 Redis 构建分布式系统的轻量级协调机制
    开发心得:利用 Redis 构建分布式系统的轻量级协调机制 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
  • Linux学习精华:程序管理、终端种类与命令帮助获取方法综述 ... [详细]
  • 周排行与月排行榜开发总结
    本文详细介绍了如何在PHP中实现周排行和月排行榜的开发,包括数据库设计、数据记录和查询方法。涉及的知识点包括MySQL的GROUP BY、WEEK和MONTH函数。 ... [详细]
  • 本文介绍了如何在 Spring Boot 项目中使用 spring-boot-starter-quartz 组件实现定时任务,并将 cron 表达式存储在数据库中,以便动态调整任务执行频率。 ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
author-avatar
HoerenRegen
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有