MyISAM

MySQL数据库修改数据表引擎

不想你离开。 提交于 2019-11-28 18:55:02
mysql 表类型说明 MyISAM: 这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method ( 有索引的 顺序访问方法 ) 的缩写,它是存储记录和文件的标准方法。与其他存储引擎比较, MyISAM具有检查和修复表格的大多数工具 。 MyISAM表格可以被压缩,而且它们支持全文搜索。它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果 执行大量 的SELECT,MyISAM是更好的选择 。 InnoDB: 这种类型是事务安全的。它与BDB类型具有相同的特性,它们还支持外键。InnoDB表格速度很快,具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它。如果你的数据 执行大量的INSERT或UPDATE ,出于性能方面的考虑,应该使用InnoDB表。 对于支持事物的InnoDB类型的标,影响速度的主要原因是AUTOCOMMI,默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打 开也可以),将大大提高性能。 1、查看表状态 SHOW TABLE STATUS LIKE 'corr_alert'; Engine:引擎类型

mysql索引

会有一股神秘感。 提交于 2019-11-28 18:22:06
/* 所有MySQL列类型可以被索引。根据存储引擎定义每个表的最大索引数和最大索引长度。 所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。大多数存储引擎有更高的限制。 索引的存储类型目前只有两种(btree和hash),具体和存储引擎模式相关: MyISAM btree InnoDB btree MEMORY/Heap hash,btree 默认情况MEMORY/Heap存储引擎使用hash索引 MySQL的btree索引和hash索引的区别 hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像btree(B-Tree)索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 hash 索引的查询效率要远高于 btree(B-Tree) 索引。 虽然 hash 索引效率高,但是 hash 索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些。 (1)hash 索引仅仅能满足=,<=>,IN,IS NULL或者IS NOT NULL查询,不能使用范围查询。 由于 hash 索引比较的是进行 hash 运算之后的 hash 值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的 hash 算法处理之后的 hash 值的大小关系,并不能保证和hash运算前完全一样。 (2)hash 索引无法被用来避免数据的排序操作

MySQL优化(超完整版)(一)

我的梦境 提交于 2019-11-28 18:05:40
一、 MySQL的优化   前言 :     MySQL数据库的优化模块:       - 数据库的设计—三大范式       - 数据库的索引:唯一索引、主键索引、聚合索引、复合索引、默认索引       - SQL优化       - 分库分表       - 读写分离:提升IO性能       - 存储过程优化       - 对MySQL配置进行优化(my.ini)       - 定时清理碎片 1. 数据库的设计 (1) 什么是三大范式?     为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。三大范式包括:     - 1NF :属性的原子性,要求属性具有原子性,不可分解。     - 2NF :对记录的唯一性,表中记录是唯一的(通常通过主键来实现)。     - 3NF :是对字段冗余性的约束,要求字段没有冗余。 (2) 1NF -- 案例 create table `user`( id int, name varchar(10), address varchar(10) ); insert into `user` values(1,’zs’,’上海市浦东新区’); 此时这里就针对address这个字段,有了可分割性,可将将address分为:-市-区。 此时表的设计就不遵循1NF。 (3) 2NF -- 案例

不就是SELECT COUNT语句吗,竟然能被面试官虐的体无完肤

。_饼干妹妹 提交于 2019-11-28 17:32:51
数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查。 在数据库的增删改查操作中,使用最频繁的就是查询操作。而在所有查询操作中,统计数量操作更是经常被用到。 关于数据库中行数统计,无论是MySQL还是Oracle,都有一个函数可以使用,那就是COUNT。 但是,就是这个常用的COUNT函数,却暗藏着很多玄机,尤其是在面试的时候,一不小心就会被虐。不信的话请尝试回答下以下问题: 1、COUNT有几种用法? 2、COUNT(字段名)和COUNT(*)的查询结果有什么不同? 3、COUNT(1)和COUNT(*)之间有什么不同? 4、COUNT(1)和COUNT(*)之间的效率哪个更高? 5、为什么《阿里巴巴Java开发手册》建议使用COUNT(*) 6、MySQL的MyISAM引擎对COUNT(*)做了哪些优化? 7、MySQL的InnoDB引擎对COUNT(*)做了哪些优化? 8、上面提到的MySQL对COUNT(*)做的优化,有一个关键的前提是什么? 9、SELECT COUNT(*) 的时候,加不加where条件有差别吗? 10、COUNT(*)、COUNT(1)和COUNT(字段名)的执行过程是怎样的? 以上10道题,如果您可以全部准确无误的回答的话,那说明你真的很了解COUNT函数了,如果有哪些知识点是不了解的

【04】MySQL:存储引擎

南笙酒味 提交于 2019-11-28 17:28:46
写在前面的话 在使用 Linux 的时候,可以经常听到有关文件系统 FS(File System)的东西,MySQL 也有属于自己类似的东西,那就是存储引擎。之前在创建数据表的时候,在 Create table 后面一般都加了 engine=innodb。这就是指定存储引擎。 关于存储引擎 可以将存储引擎就当作 Linux 而言的文件系统,其主要功能在于:数据读写 / 安全 / 一致性,提升读写性能,提供热备份,自动故障恢复,高可用等。 需要知道的存储引擎大致有: InnoDB , MyISAM , MEMORY ,ARCHIVE, CSV , BLACKHOLE ,MERGE,NDBCLUSTER,EXAMPLE 等 查看数据库支持的存储引擎: show engines; 结果: 值得注意的是,存储引擎针对的对象是表,这意味着一个库中,可能存在多种存储引擎,例如: select TABLE_NAME,ENGINE from information_schema.tables where TABLE_SCHEMA="mysql"; 结果: 对于 MySQL 的两大分支 Percona 和 MariaDB 的存储引擎: Percona:默认 XtraDB MariaDB:默认 InnoDB 同样也有其它的存储引擎:TokuDB,RocksDB,MyRocks 等。

How do I know if a mysql table is using myISAM or InnoDB Engine?

别说谁变了你拦得住时间么 提交于 2019-11-28 15:55:05
问题 In MySQL, there is no way to specify a storage engine for a certain database, only for single tables. However, you can specify a storage engine to be used during one session with: SET storage_engine=InnoDB; So you don't have to specify it for each table. How do I confirm, if indeed all the tables are using InnoDB? 回答1: If you use SHOW CREATE TABLE, you have to parse the engine out of the query. Selecting from the INFORMATION_SCHEMA database is poor practice, as the devs reserve the right to

mysql备份工具innobackupex,xtrabackup-2.1安装与测试

…衆ロ難τιáo~ 提交于 2019-11-28 15:33:51
一、Xtrabackup介绍 1.1 :Xtrabackup是什么 Xtrabackup 是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。 Xtrabackup 有两个主要的工具:xtrabackup、innobackupex 1 、xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表 2 、innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的 同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项。如slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。 1.2 :Xtrabackup可以做什么 : 在线(热)备份整个库的InnoDB、 XtraDB表 在xtrabackup的上一次整库备份基础上做增量备份(innodb only) 以流的形式产生备份,可以直接保存到远程机器上(本机硬盘空间不足时很有用) MySQL 数据库本身提供的工具并不支持真正的增量备份,二进制日志恢复是point

Xtrabackup 安装使用

此生再无相见时 提交于 2019-11-28 15:33:14
一 简介: Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁)。XtraBackup支持所有的Percona Server、MySQL、MariaDB和Drizzle。几年前 使用 过,但现在忘记的差不多了,所以就重新拾起看看。 xtrabackup有两个主要的工具:xtrabackup、innobackupex ( 1 ).xtrabackup只能备份InnoDB和XtraDB 两种数据表 ( 2 ).innobackupex则封装了xtrabackup,同时可以备份MyISAM数据表 Innobackupex完整备份后生成了几个重要的文件: xtrabackup_binlog_info:记录当前最新的LOG Position xtrabackup_binlog_pos_innodb:innodb log postion xtrabackup_checkpoints: 存放备份的起始位置beginlsn和结束位置endlsn,增量备份需要这个lsn[增量备份可以在这里面看from和to两个值的变化] Xtrabackup特点: ( 1 )备份过程快速、可靠 ( 2

MySQL中的存储引擎

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