MyISAM

MySQL高级知识(一)——基础

隐身守侯 提交于 2020-05-02 06:46:19
前言:MySQL高级知识主要来自 尚硅谷 中MySQL的视频资源。对于网上视频资源来说,尚硅谷是一个非常好的选择。通过对相应部分的学习,笔者可以说收益颇丰,非常感谢尚硅谷。 1.关于MySQL的一些文件 MySQL如何安装、如何配置自启动,这里不进行讲述,可自行搜索相关安装教程进行处理。这里主要介绍MySQL的主要配置文件。 ①二进制日志log-bin:用于主从复制。 ②错误日志log-error:默认关闭,记录严重的警告和错误信息,每次启动和关闭的详细信息等。 ③查询日志show-log:默认关闭,记录查询的sql语句,如果开启会降低mysql的整体性能,因为记录日志也是需要消耗系统资源的。 ④ frm文件 :存放表结构。 ⑤ myd文件 :存放表数据。 ⑥ myi文件 :存放表索引。 特别提出MySQL中的重要配置文件:Windows下名为my.ini,Linux下为 /etc/my.cnf 。对于服务器的调优相关过程都在改配置文件中,需要特别掌握。 2.MySQL的逻辑架构 MySQL是架构非常优良,主要体现在存储引擎上。MySQL是 插件式的存储引擎 ,它可以将查询处理和其他的系统任务以及数据的存储提取相分离。 从上图可知,MySQL的逻辑框架主要分为四层: ① 连接层 ;② 服务层 (主要进行sql语句相关的操作);③ 引擎层 (注意引擎层是可拔插的);④ 存储层 。

mysql中innodb和myisam对比及索引原理区别(转)

浪子不回头ぞ 提交于 2020-05-01 22:00:12
InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了 1、事务和外键 InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能 MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择 2、全文索引 Innodb不支持全文索引,如果一定要用的话,最好使用sphinx等搜索引擎。myisam对中文支持的不是很好 不过新版本的Innodb已经支持了 3、锁 mysql支持三种锁定级别,行级、页级、表级; MyISAM支持表级锁定,提供与 Oracle 类型一致的不加锁读取(non-locking read in SELECTs) InnoDB支持行级锁,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,注意间隙锁的影响 例如update table set num=1 where name like “%aaa%” 4、存储 MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型,

MySQL5.6 新性能之交换分区(exchange partitions)

自作多情 提交于 2020-05-01 17:17:28
MySQL5.6 新性能之交换分区(exchange partitions) 说明:文章内容起源于网络并结合自己的实验而得;但参考的文章地址当时没记录下来,如果发现有侵权问题,请留言。 ~ ~ 分区是MySQL5.1版本时添加了对分区的支持。 分区的过程是将一个表或者索引分解为多个更小,更可管理的部分,每个分区都是独立的对象,可以独立处理,也可以作为一个更大的对象的一部分进行处理。 MySQL数据库支持的分区类型为水平分区,并不支持垂直分区。 此外MySQL数据库的分区是局部分区索引,一个分区中既存放了数据又存放了索引。而全局分区是指数据存放在各个分区中,而索引存放在一个对象中。目前MySQL数据库还不支持全局分区。 MySQL5.6 ,让分区交换成了现实。只需要通过ALTER TABLE ...EXCHANGE PARTITION语句即可,也就是说,可以在短暂的时间内将某一个分区内的数据移到其他(独立)表中。 假设有分区表P和未分区表T,他们除去分区属性不同外,其他列属性都一样,那么可用EXCHANGE PARTITION将P的某个分区和T表中的数据进行互换;也就是P中某分区的数据会剪切的存入T,而T中数据会剪切的存入P分区。利用该功能可用将T表数据载入分区中,也可用将分区数据导出到T表中。 该操作需要永远ALTER, INSERT, CREATE, DROP权限。 一、实验

MySQL事务与并发

馋奶兔 提交于 2020-05-01 14:30:52
很多程序员都学过MySQL,而且也会写SQL语句。但仅仅会写还远远不够,在面试中以及在工作中,还必须要会事务和并发。 一、事务 事务是满足 ACID 特性的操作,可以通过 Commit 提交事务,也可以使用 Rollback 进行回滚。 A(Atomicity)原子性 :事务被视为不可分割的小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。 C(Consistency)一致性 :数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。 I(Isolation)隔离性 :事务之间的操作是相互隔离的。 D(Durability)持久性 :一旦事务提交,则其所做的修改将会永远保存到数据库中。 二、并发一致性 在并发环境下,容易造成并发一致性问题,导致隔离性被破坏。假设目前有两个事务,分别命名为A和B,在并发环境下,容易出现以下问题。 丢失更新 :A、B同时修改数据,A先,B后,A提交后B提交,B操作覆盖了A的操作,导致A丢失更新。 读脏数据 :A修改数据,B读取数据;随后A撤销操作,则B读到脏数据。 不可重复读 :B读取数据,A修改数据,B再次读取数据,发现数据和第一次读时不一致。 幻读 :A读取了某个范围的数据,B在此范围内插入一条数据;A再次读取,结果不一样。 三、锁 在并发环境下,为解决并发一致性问题保证事务的隔离性,可采取封锁机制

MySQL事务与并发

南笙酒味 提交于 2020-05-01 10:55:17
很多程序员都学过MySQL,而且也会写SQL语句。但仅仅会写还远远不够,在面试中以及在工作中,还必须要会事务和并发。 一、事务 事务是满足 ACID 特性的操作,可以通过 Commit 提交事务,也可以使用 Rollback 进行回滚。 A(Atomicity)原子性 :事务被视为不可分割的小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。 C(Consistency)一致性 :数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。 I(Isolation)隔离性 :事务之间的操作是相互隔离的。 D(Durability)持久性 :一旦事务提交,则其所做的修改将会永远保存到数据库中。 二、并发一致性 在并发环境下,容易造成并发一致性问题,导致隔离性被破坏。假设目前有两个事务,分别命名为A和B,在并发环境下,容易出现以下问题。 丢失更新 :A、B同时修改数据,A先,B后,A提交后B提交,B操作覆盖了A的操作,导致A丢失更新。 读脏数据 :A修改数据,B读取数据;随后A撤销操作,则B读到脏数据。 不可重复读 :B读取数据,A修改数据,B再次读取数据,发现数据和第一次读时不一致。 幻读 :A读取了某个范围的数据,B在此范围内插入一条数据;A再次读取,结果不一样。 三、锁 在并发环境下,为解决并发一致性问题保证事务的隔离性,可采取封锁机制

MySQL 完整备份和增量备份

倾然丶 夕夏残阳落幕 提交于 2020-05-01 04:55:51
MySQL完全备份与恢复 随着自动化办公与电子商务的不断扩展,企业对于信息系统的依赖性越来越重要,而数据库在信息系统中担任着非常重要的角色。尤其一些对数据库可靠性要求非常高的行业,例如银行,证券,电信等,如果发生意外宕机或数据丢失,其损失是非常重要的。为此数据库管理员必须针对具体的业务要求定制详细的数据库备份与灾难恢复的策略,并通过模拟故障对每种可能的情况进行严格的测试。而保障数据的可靠性。 数据备份的重要性 备份的主要目的是灾难恢复,备份还可以测试应用,回滚数据修改,查询历史数据,审计等。我们将从生产运维的角度了解备份恢复的分类与方法。 在企业中数据的价值至关重要,数据保障了企业的业务的运行,因此数据的安全性及可靠性是运维的重中之重,任何数据的丢失都有可能会对企业产生严重的后果。造成数据丢失的原因如下: ● 程序错误 ● 人为错误 ● 运算失败 ● 磁盘故障 ● 灾难(如火灾、地震)和盗窃 二、数据库备份的类型 从物理与逻辑的角度:备份可以分为物理备份和逻辑备份 物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。物理备份又可分为 脱机备份(冷备份 )和 联机备份(热备份) 。这种类型的备份适用于出现问题时需要快速恢复的大型重要数据库。 1、冷备份:是在关闭数据库的时候进行的 2、热备份:数据库处于运行状态,这种备份方法依赖于数据库的日志文件

mysql通过mysqldump实现备份,脚本编写

妖精的绣舞 提交于 2020-05-01 04:47:12
每日三点同步mysql备份任务 crontab -e 0 3 * * * sh /home/shell/mysql_bakup.sh >> /dev/null 2>&1 mysqldump备份简单脚本 #!/bin/bash /usr/local/mysql/bin/mysqldump -uroot -pmingquan0211 --all-databases --routines --events --triggers | gzip > /home/shell/mysql_bakup/mysql_bakup_`date '+%Y-%m-%d'`.sql.gz find /home/shell/mysql_bakup -mtime +30 -name "*.gz" -exec rm -rf {} \; --triggers 同时导出触发器。该选项默认启用,用 --skip-triggers 禁用它。 --routines,-R 导出存储过程以及自定义函数 --quick,-q 该选项在导出大表时很有用,它强制 MySQLdump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。 . MySQLdump增量备份配置 执行增量备份的前提条件是MySQL打开binlog日志功能,在my.cnf中加入 log-bin=/opt/Data/MySQL-bin “log

zbb20180619 mysql 免安装版安装配置+设置密码

▼魔方 西西 提交于 2020-05-01 04:23:15
mysql免安装版安装配置+设置密码 环境 win7 数据库 mysql5.6.11 步骤: 1.首先去官网下载mysql5.6.11免安装版,mysql全版本下载地址:http://downloads.mysql.com/archives/community/; 2.将下载好的压缩包解压到自己指定的地方,这里解压到D:\mysql5.6.11文件夹; 3.在解压的文件夹中创建my.ini配置文件(可以新建.txt,然后更改后缀); 4.编辑my.ini内容如下(红色的地方根据自己解压目录进行更改); [client] port=3306 default-character-set=utf8 [mysqld] port=3306 character_set_server=utf8 basedir=D:\mysql5.6.11 #解压目录 datadir=D:\mysql5.6.11\data #解压目录下data目录 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [WinMySQLAdmin] D:\mysql5.6.11\bin\mysqld.exe # The maximum amount of concurrent sessions the MySQL server will # allow. One of these

MySQL-06 数据备份和恢复

烈酒焚心 提交于 2020-05-01 03:56:32
学习目标 数据备份 数据恢复 数据库迁移 导入和导出 数据备份 系统意外崩溃或者服务器硬件损坏都有可能导致数据库丢失,因此生产环境中数据备份非常重要。 MySQLdump命令备份 该命令可以将数据库备份成一个文件文件,该文件包含了数据定义语句和数据操纵语句,可以执行重新创建数据库表并插入数据。 语法格式: mysqldump -u User -h Host -pPassword DBname[TableName,[TableName...]] > [dump file.sql]   示例:备份myschool数据库 备份文本文件: -- -- Dumping data for table `subject` -- LOCK TABLES `subject` WRITE; /*!40000 ALTER TABLE `subject` DISABLE KEYS */; INSERT INTO `subject` VALUES (1,'数据库基础',1,20),(2,'Java逻辑基础',1,18),(3,'SQL基础',1,15),(4,'HTML',1,20),(5,'Control+Ajax',2,20), (6,'项目管理',4,40),(7,'软件工程',3,28),(8,'算法与数据结构',2,15),(9,'C语言',1,25),(10,'邓小平理论',1,18),(11,

数据库-mysql 优化-explain

佐手、 提交于 2020-04-30 11:47:38
mysql 优化-explain 一 explain关键字可以模拟优化器执行sql查询语句,从而指导mysql 是如何处理你的sql语句的,分析你的查询语句或是表结构的性能瓶颈 二 explain + sql 查询出 后有如下列 id select_type table type possible_keys key key_len ref rows extra a . i d 分为三种 相同 、不同 、 相同不同 b. select-type - 查询的类型主要用于区别普通查询、联合查询、子查询等复杂查询 simple : 简单的select查询,查询中不包含子查询或者union primary : 查询中若任何复杂的子部分,最外层查询则被标记为这个 subquery: 在select或where列表中包含子查询 derived: 在from列表中包含的子查询被标记为derived(衍生) mysql会递归执行这些子查询,把结果放在临时表里。 union: 若第二个select出现在union之后,则被标记为union, 若union包含在from子句的子查询中,外层select将被标记为derived union result: 从union表获取结果的select c. table 显示这一行的数据是关于那张表 d. type 显示使用了何种类型, 从最好的到最差的一次是: