MyISAM

MySQL之数据库优化

人走茶凉 提交于 2020-02-27 04:39:10
Mysql数据库的优化技术 对mysql优化是一个综合性的技术,主要包括 •表的设计合理化(符合3NF) •添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引] •分表技术(水平分割、垂直分割) •读写[写: update/delete/add]分离 •存储过程 [模块化编程,可以提高速度] •对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ] •mysql服务器硬件升级 •定时的去清除不需要的数据,定时进行碎片整理(MyISAM) 数据库优化工作 对于一个以数据为中心的应用,数据库的好坏直接影响到程序的性能,因此数据库性能至关重要。一般来说,要保证数据库的效率,要做好以下四个方面的工作: ① 数据库设计 ② sql语句优化 ③ 数据库参数配置 ④ 恰当的硬件资源和操作系统 此外,使用适当的存储过程,也能提升性能。 这个顺序也表现了这四个工作对性能影响的大小 数据库表设计 通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解三个范式(通 俗地理解是够用的理解,并不是最科学最准确的理解): 第一范式:1NF是对属性的原子性约束,要求属性(列)具有原子性,不可再分解;(只要是关系型数据库都满足1NF) 第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;

MyISAM与InnoDB 的区别

六月ゝ 毕业季﹏ 提交于 2020-02-27 04:26:07
区别: 1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务; 2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败; 3. InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件本身就是按B+Tree组织的一个索引结构),必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。 MyISAM是非聚集索引,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。 MyISAM的B+树主键索引和辅助索引的叶子节点都是数据文件的 地址指针: InnoDB的B+树主键索引的叶子节点就是数据文件,辅助索引的叶子节点是主键的值: 4.InnoDB表必须有主键(用户没有指定的话会自己找或生产一个主键),而Myisam可以没有 5.Innodb存储文件有frm、ibd,而Myisam是frm、MYD、MYI Innodb:frm是表定义文件,ibd是数据文件 Myisam:frm是表定义文件

Mysql锁总结

陌路散爱 提交于 2020-02-26 16:26:13
今天我们来介绍一下Mysql中不同类型的锁 数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来 实现这些访问规则的重要数据结构 根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类 全局锁 全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法, 命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句 全局锁的典型使用场景是,做全库逻辑备份 但是让整库都只读,听上去就很危险: 如果你在主库上备份,那么在备份期间都不能执行更新,业务基本上就得停摆; 如果你在从库上备份,那么备份期间从库不能执行主库同步过来的 binlog,会导致主从 延迟 官方自带的逻辑备份工具是 mysqldump。当 mysqldump 使用参数–single-transaction 的时候,导数据之前就会启动一个事务,来确保拿到一致性视图。而由于 MVCC 的支持, 这个过程中数据是可以正常更新的 有了这个功能,为什么还需要 FTWRL 呢?一致性读是好,但前提是引擎 要支持这个隔离级别。比如,对于

mysql优化之索引篇

泪湿孤枕 提交于 2020-02-26 05:28:39
对mysql优化是一个综合性的技术,主要包括 a: 表的设计合理化(符合3NF) b: 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引] c: 分表技术(水平分割、垂直分割) d: 读写[写: update/delete/add]分离 e: 存储过程 [模块化编程,可以提高速度] f: 对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ] g: mysql服务器硬件升级 h: 定时的去清除不需要的数据,定时进行碎片整理(MyISAM) i: sql语句优化 本篇主要总结下索引有关内容 索引 四种索引(主键索引/唯一索引/全文索引/普通索引) CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON tbl_name (index_col_name,...) index_col_name: col_name [(length)] [ASC | DESC] (列部分值作为索引) 列部分值作为索引:: 对于CHAR和VARCHAR列,只用一列的一部分就可创建索引。 创建索引时,使用col_name(length)语法,对前缀编制索引。 前缀包括每列值的前length个字符。 BLOB和TEXT列也可以编制索引,但是必须给出前缀长度。

Mysql中InnoDB和MyISAM两种引擎

人走茶凉 提交于 2020-02-25 20:20:10
InnoDB支持事务,意味着强业务支持性更好;可以回滚,也就意味着某些异常状态下仍能保持稳定性。而MyISAM不支持,相对来讲性能效率就更好,只用查询类的表就更适合该引擎。 但5.5版本开始就将InnoDB作为默认引擎,在最新的8以上版本中,更是取消了MyISAM并更新了InnoDB,优化了InnoDB的效率,那MyISAM就没什么存在的必要了。 最近使用MyIsql时出问题并不是AOP切面和事务配置的问题,结果是MyISAM的问题,踩了个坑半天都没反应过来,查了半天才搞懂。 以前总觉得小就是美,快就是好的想法应该变化,至少不能两全的时候稳定性比快和小重要得多。当时想update一个表结果范围错了,网上一顿查都没查明白,就觉得InnoDB真烂要是MyISAM导出方便不知道多少。而当时也是只想着往里面灌数据,反正就一个跟视频一块做的项目,人家干啥我干啥呗,结果回过头来写第一篇数据库才发现现实里面哪有那么多正好的数据给你看。 最后就是之前的事还是要多拿出来找问题,重复的项目一边就够了,多改多嚼,我在网上搜大多都是15,16年的坑,结果到现在了我还在犯,看落后的视频做落后的项目,真的脑残。   贴一个问题,我最近遇到,也是很老的:   一个商品有库存,假设只剩最后一件了,库存为1,如果此时有很多个人同时购买此商品怎么办,不可能让两个人都下单成功,库存为-1吧,所以这个在php +

MySQL概述

本小妞迷上赌 提交于 2020-02-25 20:06:11
MySql主要概念 参考:https://snailclimb.gitee.io/javaguide/#/database/MySQL MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展。阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的。MySQL是开放源代码的,因此任何人都可以在 GPL(General Public License) 的许可下下载并根据个性化的需要对其进行修改。 1 存储引擎 1.1 查看引擎的命令 查看MySQL提供的所有存储引擎 mysql> show engines; 查看MySQL当前默认的存储引擎 我们也可以通过下面的命令查看默认的存储引擎。 mysql> show variables like '%storage_engine%'; 查看表的存储引擎 show table status like "table_name" ; 1.2 MyISAM和InnoDB区别 是否支持行级锁 : MyISAM 只有表级锁(table-level locking),而InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。 是否支持事务和崩溃后的安全恢复: MyISAM 强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持

Mysql 多种Count写法的区别

*爱你&永不变心* 提交于 2020-02-25 18:34:33
今天我们来看看count的不同实现方式 count(*) 的实现方式 先来看一下 coun(*)的实现,MyISAM和InnoDB的实现上是不同的 MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count( ) 的时候会直接返回这个数,效率很高; 而 InnoDB 引擎就麻烦了,它执行 count( ) 的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数 如果加了 where条件的话,MyISAM 表也是不能返回得这么快的 为什么 InnoDB 不跟 MyISAM 一样,也把数字存起来呢? 这是因为即使是在同一个时刻的多个查询,由于多版本并发控制(MVCC)的原因, InnoDB 表应该返回多少行也是不确定的 这和 InnoDB 的事务设计有关系,可重复读是它默认的隔离级别,在代码上就是通过MVCC 来实现的。每一行记录都要判断自己是否对这个会话可见,因此对于 count(*) 请求来说,InnoDB只好把数据一行一行地读出依次判断,可见的行才能 够用于计算“基于这个查询”的表的总行数 InnoDB 是索引组织表,主键索引树的叶子节点是数据,而普通索引树的叶子节点是主键值。所以,普通索引树比主键索引树小很多。对于count(*) 这样的操作,遍历哪个索引树得到的结果逻辑上都是一样的。因此,MySQL 优化器会找到最小的那棵树来 遍历。在保证逻辑正确的前提下

Migrating php4/mysql4 to php5/mysql5: switch to InnoDB?

限于喜欢 提交于 2020-02-25 02:52:32
问题 I have a legacy web application php4/mysql4 (MyISAM, db contains some cms, some user data, some calendar application). Now I am going to migrate to a new server with php5/mysql5. Should I change to InnoDB while migrating a mysql database? - expected advantages / disadvantages / risks? - Is MyISAM deprecated or will it some day be? Or can I safely keep it? - I heard MyISAM easily corrupts, what about InnoDB, is it crash resistant? - Is InnoDB easier or more safely to backup and restore? Can it

day8-MySQL存储引擎

好久不见. 提交于 2020-02-22 17:36:54
教程链接: http://c.biancheng.net/view/2361.html 什么是存储引擎 数据库存储引擎是数据库底层软件组件, 数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作 。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。 提示: InnoDB 事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。MySQL 5.5.5 之后,InnoDB 作为默认存储引擎。 MyISAM 是基于 ISAM 的存储引擎,并对其进行扩展,是在 Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM 拥有较高的插入、查询速度,但不支持事务。 MySQL存储引擎种类 存储引擎能够根据具体的应用建立不同存储引擎表。 1 #存储引擎种类 2 InnoDB 3 MyISAM 4 MEMORY 5 ARCHIVE 6 FEDERATED 7 EXAMPLE 8 BLACKHOLE 9 MERGE 10 NDBCLUSTER 11 CSV 其他分支 percona : XtraDB MariaDB : InnoDB 其他的引擎: TokuDB , MyRocks Compression: 25x for high compression Fast Insertions and Deletions

Mysql:初识MySQL

自古美人都是妖i 提交于 2020-02-22 02:59:11
转载自: https://www.cnblogs.com/hellokuangshen/archive/2019/01/09/10246029.html Mysql:初识MySQL 只会写代码的是码农;学好数据库,基本能混口饭吃;在此基础上再学好操作系统和计算机网络,就能当一个不错的程序员。如果能再把离散数学、数字电路、体系结构、数据结构/算法、编译原理学通透,再加上丰富的实践经验与领域特定知识,就能算是一个优秀的工程师了。 为什么学习数据库 岗位技能需求 现在的世界,得数据者得天下 存储数据的方法 程序,网站中,大量数据如何长久保存? 数据库是几乎软件体系中最核心的一个存在。 什么是数据库 数据库( DataBase ,简称 DB ) 概念 : 长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据"仓库" 作用 : 保存,并能安全管理数据(如:增删改查等),减少冗余... 数据库总览 : 关系型数据库 (SQL) MySQL , Oracle , SQL Server , SQLite , DB2 , ... 关系型数据库通过外键关联来建立表与表之间的关系 非关系型数据库 (NOSQL) Redis , MongoDB , ... 非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定 什么是DBMS 数据库管理系统 ( D