MyISAM

MyISAM InnoDB 区别

我与影子孤独终老i 提交于 2019-11-29 03:33:50
MyISAM 和 InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快, MyISAM 和 InnoDB 讲解   InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。   以下是一些细节和具体实现的差别:   ◆1.InnoDB不支持FULLTEXT类型的索引。   ◆2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。   ◆3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中

MySQL —— 存储引擎的 InnoDB 与 MyISAM 之争

眉间皱痕 提交于 2019-11-29 03:33:36
作为 MySQL 数据库的两种主要的存储引擎,InnoDB 与 MyISAM 各有长处。 在 MySQL 5.1 及之前的版本中,MyISAM 是默认的存储引擎,而在 MySQL 5.5 版本以后,默认使用 InnoDB 存储引擎。 MyISAM 不支持行级锁,换句话说,MyISAM 会对整张表加锁,而不是针对行。同时,MyISAM 不支持事务和外键。MyISAM 可被压缩,存储空间较小,而且 MyISAM 在筛选大量数据时非常快。 InnoDB 是事务型引擎,当事务异常提交时,会被回滚。同时,InnoDB 支持行锁。此外,InnoDB 需要更多存储空间,会在内存中建立其专用的缓冲池用于高速缓冲数据和索引。InnoDB 支持自动奔溃恢复特性。 InnoDB 与 MyISAM 的主要区别 对于如何选择 InnoDB 与 MyISAM 存储引擎。 建议:一般情况下,应该优先选择 InnoDB 存储引擎,并且尽量不要将 InnoDB 与 MyISAM 混合使用。 来源: oschina 链接: https://my.oschina.net/u/2963821/blog/1541241

Mysql命令记录

半腔热情 提交于 2019-11-29 03:32:19
Mysql命令记录 查看是否自动提交,并修改(1/ON,启用自动提交;0/OFF,禁用自动提交) mysql> show variables like 'autocommit'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | autocommit | ON | +---------------+-------+ 1 row in set mysql> set autocommit = 1; Query OK, 0 rows affected 查看版本号 mysql> select version(); +------------+ | version() | +------------+ | 5.7.20-log | +------------+ 1 row in set 查看使用引擎 mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment |

PHP面试题-区别题

守給你的承諾、 提交于 2019-11-29 03:31:48
echo 、 print 、 print_r 、 var_dump 区别 echo 和 print 是语言结构、 print_r 和 var_dump 是普通函数 echo :输出一个或多个字符串 print :输出字符串 print_r :打印关于变量的易于理解的信息 var_dump :打印关于变量的易于理解的信息 ( 带类型 ) isset 和 empty 的区别 isset :检测变量是否已设置并且非 NULL empty :判断变量是否为空,变量为 0/false 也会被认为是空;变量不存在,不会产生警告 static 、 self 、 $this 的区别 static : static 可以用于静态或非静态方法中,也可以访问类的静态属性、静态方法、常量和非静态方法,但不能访问非静态属性 self :可以用于访问类的静态属性、静态方法和常量,但 self 指向的是当前定义所在的类,这是 self 的限制 $this :指向的是实际调用时的对象,也就是说,实际运行过程中,谁调用了类的属性或方法, $this 指向的就是哪个对象。 include 、 require 、 include_once 、 require_once 的区别 require 和 include 几乎完全一样,除了处理失败的方式不同之外。 require 在出错时产生 E_COMPILE_ERROR

当面试官问到:《MySQL数据库的锁机制》该如何拿分?

帅比萌擦擦* 提交于 2019-11-29 03:20:47
为什么要加锁? 问题背景 当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 要解决的问题 多用户环境下保证数据库完整性和一致性 锁是什么 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 锁的分类 行 行级锁 行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁 和 排他锁。 特点 开销D,加锁慢;会出现死锁;锁定粒度最小,F生锁冲突的概率最低,并F度也最高。 表 表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MYISAM与INNODB都支持表级锁定。表级锁定分为表共享读锁(共享锁)与表独占写锁(排他锁)。 特点 开销小,加锁快;不会出现死锁;锁定粒度D,F出锁冲突的概率最高,并发度最低。 页

MySQL存储引擎介绍

佐手、 提交于 2019-11-29 02:14:19
目录 1. MySql体系结构 2. MySql存储引擎 2.1 InnoDB存储引擎 2.2 MyISAM存储引擎 2.3 Memory存储引擎 2.4 Archive存储引擎 3. 存储引擎对比整理 4. 参考 MySql数据库最大的特色就是其插件式的存储引擎架构,本文主要介绍MySql常用的存储引擎,为开发时选择合适的存储引擎提供参考。 1. MySql体系结构 在介绍存储引擎之前先来介绍下MySql的体系结构,以便大家知道存储引擎在MySql整个体系中处于什么位置。下图是官方提供的一张架构图: MySQL体系结构图 从上图可以发现,MySQL由以下几部分组成: 连接池组件 管理服务和工具组件 SQL接口组件 查询分析器组件 优化器组件 缓冲(Cache)组件 插件式存储引擎 物理文件 MySQL数据库区别于其他数据库的最重要的一个特点就是其插件式的表存储引擎,从上图中也可以看到,MySql支持很多种存储引擎。需要特别注意的是,存储引擎是基于表的,而不是数据库。 2. MySql存储引擎 插件式存储引擎的好处是:能够根据具体的应用的特点选择不同的存储引擎。下面是几种MySQL常用的存储引擎。 2.1 InnoDB存储引擎 InnoDB存储引擎支持事务,其设计目标主要面向在线事务处理(OLTP)的应用。其特点是行锁设计、支持外键,并支持类似于Oracle的非锁定读

MySQL中的锁

孤街醉人 提交于 2019-11-29 02:02:16
MySQL中的锁 https://www.cnblogs.com/chenqionghe/p/4845693.html 锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。 MySQL大致可归纳为以下3种锁: 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般 表级锁 MySQL表级锁有两种模式:表共享锁(Table Read Lock)和表独占写锁(Table Write Lock) 对MyISAM的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写请求 对MyISAM的写操作,则会阻塞其他用户对同一表的读和写操作 MyISAM表的读操作和写操作之间,以及写操作之间是串行的

mysql索引及引擎

一曲冷凌霜 提交于 2019-11-29 01:57:16
索引类型: 1,普通索引 2,唯一索引 索引值必须唯一 3,全文索引 仅可用于MyISAM引擎 4,单列索引、多列索引 多个单列索引与单个多列索引的查询效果不同,因为执行查询时,MySQL只能使用一个索引,会从多个索引中选择一个限制最为严格的索引。 5,组合索引(最左前缀原则) MYISAM和InnoDb区别 1,存储结构 每个MyIsam在磁盘上存储三个文件,而InnoDb存在同一个文件中 2,MyIsam不支持事务,InnoDb支持事务 3,MyIsam不支持外键,InnoDb支持外键 4,如果执行大量的select,MyIsam是更好的选择,而执行大量的Insert或update,InnoDb是好的选择。 来源: CSDN 作者: WhoCan 链接: https://blog.csdn.net/zcbyzcb/article/details/70880352

千万级MySQL数据库建立索引,提高性能的秘诀

…衆ロ難τιáo~ 提交于 2019-11-29 01:57:15
实践中如何优化MySQL 实践中,MySQL的优化主要涉及SQL语句及索引的优化、数据表结构的优化、系统配置的优化和硬件的优化四个方面,如下图所示: SQL语句及索引的优化 SQL语句的优化 SQL语句的优化主要包括三个问题,即如何发现有问题的SQL、如何分析SQL的执行计划以及如何优化SQL,下面将逐一解释。 怎么发现有问题的SQL?(通过MySQL慢查询日志对有效率问题的SQL进行监控) MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。 long_query_time的默认值为10,意思是运行10s以上的语句。慢查询日志的相关参数如下所示: 通过MySQL的慢查询日志,我们可以查询出执行的次数多占用的时间长的SQL、可以通过pt_query_disgest(一种mysql慢日志分析工具)分析Rows examine(MySQL执行器需要检查的行数)项去找出IO大的SQL以及发现未命中索引的SQL,对于这些SQL,都是我们优化的对象。 通过explain查询和分析SQL的执行计划 使用 EXPLAIN 关键字可以知道MySQL是如何处理你的SQL语句的,以便分析查询语句或是表结构的性能瓶颈。通过explain命令可以得到表的读取顺序

MySQL之存储引擎

不想你离开。 提交于 2019-11-29 01:44:00
MySQL之存储引擎 1.MySQL存储引擎介绍 MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。 例如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。 这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。 MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。 选择如何存储和检索你的数据的这种灵活性是MySQL为什么如此受欢迎的主要原因。其它数据库系统(包括大多数商业选择)仅支持一种类型的数据存储。 遗憾的是,其它类型的数据库解决方案采取的“一个尺码满足一切需求”的方式意味着你要么就牺牲一些性能,要么你就用几个小时甚至几天的时间详细调整你的数据库。使用MySQL,我们仅需要修改我们使用的存储引擎就可以了 2.MySQL结构 MySQL架构总共四层