存储引擎

MySQL Innodb 存储引擎参数优化

半腔热情 提交于 2019-11-29 22:26:06
介绍: InnoDB给 MySQL 提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。 Innodb 的创始人:Heikki Tuuri Heikki Tuuri在Innodb的Bug社区里也是很活跃的,如果遇到Bug也可以直接提到社区,得到作者的解答。 为什么要学习Innodb的调优: 目前来说:InnoDB是为Mysql处理巨大数据量时的最大性能设计。它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。在数据量大的网站或是应用中Innodb是倍受青睐的。 另一方面,在数据库的复制操作中Innodb也是能保证master和slave数据一致有一定的作用。 参数调优内容: 1. 内存利用方面 2. 日值控制方面 3. 文件IO分配,空间占用方面 4. 其它相关参数 1.内存利用方面: 首先介绍一个Innodb最重要的参数: innodb_buffer_pool_size

Mysql的建表规范与注意事项

这一生的挚爱 提交于 2019-11-29 20:44:41
一、库名、表名、字段名必须使用小写字母,“_”分割;库名、表名、字段名必须不超过12个字符;库名、表名、字段名见名知意,建议使用名词而不是动词。 二、建议使用InnoDB存储引擎。 存储引擎:innoDb支持事物,myisam不支持事物,建议使用innoDb, 5.5以后的默认引擘,支持事务,行级锁,更好的恢复性,高并发下性能更好,对多核,大内存,ssd等硬件支持更好。 (1) MyISAM表是独立于操作系统的,这说明可以轻松地将其从Windows服务器移植到Linux服务器;每当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件,文件名就是表明。例如,我建立了一个MyISAM引擎的tb_Demo表,那么就会生成以下三个文件: 1.tb_demo.frm,存储表定义; 2.tb_demo.MYD,存储数据; 3.tb_demo.MYI,存储索引。 MyISAM表无法处理事务,这就意味着有事务处理需求的表,不能使用MyISAM存储引擎。MyISAM存储引擎特别适合在以下几种情况下使用: 1.选择密集型的表。MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。 2.插入密集型的表。MyISAM的并发插入特性允许同时选择和插入数据。例如:MyISAM存储引擎很适合管理邮件或Web服务器日志数据。 (2) InnoDB是一个健壮的事务型存储引擎

MySQL federated引擎 --- 实现类似oracle dblink功能

别说谁变了你拦得住时间么 提交于 2019-11-29 18:23:31
1.查看是否安装了federated引擎 show engines; 2.开启federated引擎 windows下在my.ini中加入federated,即可开启; linux中,需要编译时加入选项,再在my.ini中加入federated,方可开启. 3.建立远程数据表链接 举例说明: A(192.168.0.233:3306)、B(192.168.0.233:3307)、C(192.168.0.233:3308)、D(192.168.0.234:3306) 在A、B、C、D四个数据库分别创建库testfed; 在B、C上建立授权用户, mysql> grant all privileges on testfed . t_test to test@'%' identified by 'test'; (或者 grant select on testfed .t_test to test@ '192.85.1.113' identified by 'test' ; ) flush privileges; 在B上,创建 mysql> create table t_testB (id int not null auto_increment primary key, c_str char(20) not null) engine innodb; Query OK, 0 rows

mysql锁

回眸只為那壹抹淺笑 提交于 2019-11-29 16:52:57
原文链接: http://blog.csdn.net/soonfly/article/details/70238902 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。本章我们着重讨论MySQL锁机制 的特点,常见的锁问题,以及解决MySQL锁问题的一些方法或建议。 Mysql用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。这些锁统称为悲观锁(Pessimistic Lock)。 MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最 显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。

MySQL 体系结构和管理

只愿长相守 提交于 2019-11-29 14:20:50
#连接方式    - TCP/IP方式(远程、本地): mysql -uroot -p123 -h 192.168.1.33 -P3306    - Socket方式(仅本地): mysql -uroot -p123 -S /tmp/mysql.sock #MySQL 实例   - 实例的概念     mysqld后台守护进程 + 主线程 + worker线程 + 预分配的内存 # mysqld程序结构        - 一条SQL语句的执行过程     - 连接层            -SQL层            - 存储引擎层        #数据存储的逻辑结构             - 库:库属性       就是OS层面的目录      - 表:表名;属性;列:列名,列属性;数据行       MyISAM的表                 InnoDB(默认存储引擎的表)          来源: https://www.cnblogs.com/crossworld/p/11519468.html

MySQL 索引知识整理(创建高性能的索引)

可紊 提交于 2019-11-29 08:28:59
前言: 索引优化应该是对查询性能优化的最有效的手段了。索引能够轻易将查询性能提高几个数量级。 // 固态硬盘驱动器有和机械硬盘启动器,有着完全不同的性能特性; 然而即使是固态硬盘,索引的原则依然成立, 只是那些需要尽量避免的糟糕索引对固态硬盘的影响没有机械硬盘那么糟糕。 现在很多公司都将数据库的优化工作都依托于 DBA 去完成,在我看来,这些都应该是程序员必备的技能, 有经验和没经验的程序员在数据库使用起来也有很大的差异,这些差异取决开发人员对索引内部的数据结构认识, 对所有负责的业务熟悉程度,从而才能建立卓越的索引,达到性能最大化。 一、索引基础 索引在数据库中的作用,粗暴的原理介绍不做解释,太基础。 在 MySQL 中,索引可以包含一个或者多个列的值。 如果索引包含多个列,那么列的顺序十分重要,因为 MySQL 只能高效地使用索引最前缀列。 创建一个包含两个列的索引,和创建两个只包含一个列的索引大有不同。 二、索引的类型 MySQL 中有两种索引类型:BTree 和 Hash; 不同的存储引擎的索引工作方式并不一样,也不是所有的存储引擎都支持所有类型的索引。 即使多个存储引擎支持同一种类型的索引,其底层的实现也可能不同。 MyISAM 使用前缀压缩技术使得索引更小,但 InnoDB 则按照原数据格式进行储存。 MyISAM 索引通过数据的物理位置引用被索引的行,而 InnoDB

MySQL存储引擎

二次信任 提交于 2019-11-29 08:15:05
MySQL存储引擎 MySQL的存储引擎 存储引擎sql语句: 查看当前的默认存储引擎: mysql> show variables like "default_storage_engine"; 查询当前数据库支持的存储引擎 mysql> show engines \G; 常用引擎适用场景: InnoDB 用于事务处理应用程序,支持外键和行级锁。如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包括很多更新和删除操作,那么InnoDB存储引擎是比较合适的。InnoDB除了有效的降低由删除和更新导致的锁定,还可以确保事务的完整提交和回滚,对于类似计费系统或者财务系统等对数据准确要求性比较高的系统都是合适的选择。 MyISAM 如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不高,那么可以选择这个存储引擎。 Memory 将所有的数据保存在内存中,在需要快速定位记录和其他类似数据的环境下,可以提供极快的访问。Memory的缺陷是对表的大小有限制,虽然数据库因为异常终止的话数据可以正常恢复,但是一旦数据库关闭,存储在内存中的数据都会丢失。 不同的存储模式: 数据存在硬盘上,存三个文件,存表结构、数据、搜索目录; 数据存在硬盘上、存两个文件,表结构存一个文件,数据和搜索目录存一个文件; 数据存在内存中

MySQL 的架构与组件

喜欢而已 提交于 2019-11-29 06:52:05
MySQL 的逻辑架构图设计图 连接/线程处理: 管理客户端连接/会话[mysql threads] 解析器: 通过检查SQL查询中的每个字符来检查SQL语法,并 为每个SQL查询 生成 SQL_ID 。 此外,身份验证检查(用户凭据)将在此阶段发生。 优化程序: 根据存储引擎创建有效的查询执行计划。 它将重写一个查询。 示例:InnoDB具有共享缓冲区,因此优化器将从中获取预缓存的数据。 使用表统计信息优化器将为SQL查询生成执行计划。 授权检查(用户访问权限)将在此阶段发生。 元数据缓存: 缓存对象元数据信息和统计信息。 查询缓存: 来自内存的共享相同查询。如果在查询缓存中找到来自客户端的相同查询,则MySQL服务器从查询缓存中检索结果,而不是再次解析和执行该查询。 它是会话的共享缓存,因此可以发送一个客户端生成的结果集以响应另一个客户端发出的相同查询。 查询缓存基于 SQL_ID .SELECT数据进入视图是使用查询缓存预缓存数据的最佳示例。 密钥缓存: 缓存表索引。在 MySQL 中密钥是索引(在oracle密钥是约束),如果索引大小小,那么它将缓存索引结构和数据叶。如果索引很大,那么它将只缓存索引结构。由MyISAM 使用存储引擎。 存储引擎: 管理物理数据(文件管理)和位置的MySQL组件。 存储引擎负责执行SQL语句并从数据文件中获取数据。 用作插件

6)mysql存储引擎

匆匆过客 提交于 2019-11-29 06:27:30
MYISAM 不支持事务,是mysql5.6之前最常用的非事务存储引擎。 查询速度相对较快,但读写都会对数据加锁,在频繁读写业务中容易产生大量阻塞,影响整体性能 CSV 不支持事务,以csv格式存储的非事务存储引擎。 由于不支持事务,读写时会对数据加锁。通常用在不同系统间的数据交换,但不建议作为业务核心引擎来存储数据 Archive 不支持事务,只允许查询和新增数据而不允许修改的非事务存储引擎。 常用在归档类日志,这种只会新增而不会修改的数据中,另外Archive存储占用的物理空间更小 Memory 不支持事务,是一种易失性非事务存储引擎,数据存储在内存中。 特点是速度快,但mysql一旦重启,数据对消失。 主要用处是在mysql内部,在执行一些大sql过程中,需要存储临时中间结果的数据集,且这数据在符合某种条件下会将中间数据集存储在Memory种以加快sql执行速度 INNODB 支持事务,最常用的事务性存储引擎,5.7之后的默认存储引擎,一般如果没什么特别的要求,都会选这个引擎 INNODB引擎按主键顺序聚集存储,主键本身也会占用物理空间,因此主键的大小会影响查询效率。 另外数据是按主键逻辑顺序来存储,若主键顺序经常无缘变化,会造成数据迁移,带来IO性能的消耗。因此在一般情况下,建议使用自增ID为主键 在需要事务支持的场景中,一定不要混合使用事务存储引擎和非事务存储引擎

数据框架对比:Hadoop、Storm、Samza、Spark和Flink——flink支持SQL,待看

社会主义新天地 提交于 2019-11-29 05:59:35
简介 大数据是收集、整理、处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称。虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性、规模,以及价值在最近几年才经历了大规模扩展。 在之前的文章中,我们曾经介绍过 有关大数据系统的常规概念、处理过程,以及各种专门术语 ,本文将介绍大数据系统一个最基本的组件:处理框架。处理框架负责对系统中的数据进行计算,例如处理从非易失存储中读取的数据,或处理刚刚摄入到系统中的数据。数据的计算则是指从大量单一数据点中提取信息和见解的过程。 下文将介绍这些框架: 仅批处理框架: Apache Hadoop 仅流处理框架: Apache Storm Apache Samza 混合框架: Apache Spark Apache Flink 大数据处理框架是什么? 处理框架和处理引擎负责对数据系统中的数据进行计算。虽然“引擎”和“框架”之间的区别没有什么权威的定义,但大部分时候可以将前者定义为实际负责处理数据操作的组件,后者则可定义为承担类似作用的一系列组件。 例如Apache Hadoop可以看作一种以MapReduce作为默认处理引擎的处理框架。引擎和框架通常可以相互替换或同时使用。例如另一个框架Apache Spark可以纳入Hadoop并取代MapReduce