MySQL常用存储引擎之MyISAM

特性:
1、并发性与锁级别
2、表损坏修复
check table tablename
repair table tablename
3、MyISAM表支持的索引类型
①、全文索引
②、前缀索引
4、MyISAM表支持数据压缩
myisampack
限制:
版本 < MySQL5.0时默认表大小为4G
如存储达标则要修改MAX_Rows和AVG_ROW_LENGTH
版本 > MySQL5.0时默认支持为256TB 适用场景:
1、非事务形应用
2、只读类应用
3、空间类应用

MySQL常用存储引擎之Innodb

Innodb存储引擎的特征
1、Innodb是一种事务性存储引擎
2、完全支持事务的ACID特性
3、Redo Log 和 Undo Log
4、Innodb支持行级锁 Innodb使用表空间进行 数据存储
为每个表独立创建一个表空间存储
innodb_file_per_table
ON:独立表空间:tablename.ibd
OFF:系统表空间:ibdataX(X是个数字,从1开始的数字) 系统表空间和独立表空间要如何选择
比较:
系统表空间无法捡的收缩文件大小
独立表空格键可以通过optimize table命令收缩系统文件
系统表空间会产生IO瓶颈
独立表空间可以同时向多个文件刷新数据 表转移的步骤
步骤:
1、使用mysqldump到处所有数据库表数据
2、停止MySQL服务,修改参数,并删除Innodb相关文件
3、重启MySQL服务,重建Innodb系统表空间
4、重新导入数据

MySQL常见的存储引擎之CSV

文件系统存储特点
1、数据以文本方式存储在文本中
2、.csv文件存储表内容
3、.csm文件存储表的元数据如表状态和数据量
4、.frm文件存储表结构信息
5、以csv格式进行存储
6、所有列必须都是不能为Null的
7、不支持索引 适用场景:
适用作为数据交换的中间表(电子表格->csv文件->MySQL数据库目录)

MySQL常用存储引擎之Archive

文件系统存储特点
1、以zlib对表数据进行压缩,磁盘I/O更少
2、数据存储在ARZ为后缀的文件中 Archive存储引擎的特点
1、只支持insert和select操作
2、只允许在自增的ID列上加索引 适用场景:
日志和数据采集类应用

MySQL常用存储引擎之Memory

文件系统存储特点
1、也成HEAP存储引擎,所以数据保存在内存中 功能特点:
1、支持HASH索引和Btree索引
2、所有字段都有固定长度varchar(10)=char(10)
3、不支持BLOG和TEXT等大字段
4、Memory存储引擎使用表级锁
5、最大大小由max_heap_table_size参数决定 适用场景:
1、用于查找或者是映射表,例如邮编和地区的对应表
2、用于保存数据分心中产生的中间表
3、用于缓存周期性聚合数据的结果表

MySQL常用存储引擎之Federated

特点:
1、提供了访问远程MySQL服务器上表的方法
2、本地不存储数据,数据全部放到远程服务器上
3、本地需要保存表结构和远程服务器的连接信息 如何使用
默认静止,启用需要在启动时增加federated参数
mysql://user_name[:password]@host_name[:port]/db_name/table_name 适用场景:
偶尔的统计分析及手工查询

如何选择正确的存储引擎

参考条件
1、是否要支持事务
2、定期备份
3、崩溃恢复
4、存储引擎的特有特性

Mysql的服务器参数介绍

MySQL获取配置信息路径
1、命令行参数
mysqld_safe --datadir=/data/sql_data
2、配置文件
查看配置文件的命令:
[root@localhost ~]# mysqld --help --verbose | egrep -A 1 'Default options'
配置文件的有效路径
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf MySQL配置参数的作用域
1、全局参数
set global 参数名=参数值;
set @@global.参数名:=参数值;
2、会话参数
set [session] 参数名=参数值;
set @@session.参数名:=参数值; 内存配置相关参数
1、确定可以使用的内存的上限
2、确定MySQL的每个连接使用的内存
sort_buffer_size
join_buffer_size
read_buffer_size
read_rnd_buffer_size
3、确定需要为操作系统保留多少内存
4、如何为缓存池分配内存
Innodb_buffer_pool_size
注:设置缓存池的大小的考量标准为:总内存-(每个编程所以需要的内存*连接数)-系统保留内存
key_buffer_size
select sum(index_length) from information_schema.tables where engines='myisam' I/O相关配置参数
Innodo I/O相关配置
Innodb_log_file_size 单个事务日志的大小
Innodb_log_files_in_group 控制文件日子的个数
事务日志总大小 = Innodb_log_files_in_group * Innodb_log_file_size
Innodb_log_buffer_size = (32M or 128M)
Innodb_flush_log_at_trx_commint
0:每秒进行一次log写入cache,并flush log到磁盘
1[默认]:在每次事务提交执行log写入cache,并flush log到磁盘
2[建议]:每次事务提交,执行log数据写入到cache中,每秒执行一次flush log到磁盘
Innodb_flush_method=O_DIRECT
Innodb_file_per_table = 1
Innodb_doublewrite = 1 MyISAM I/O相关配置
delay_key_write
OFF:每次写操作后刷新键缓冲中的脏块到磁盘
ON:只对在键表时指定了delay_key_write选项的表使用延迟刷新
ALL:对所有的MyISAM表都使用延迟建写入 安全相关配置参数
expire_logs_days 指定自动清理binlog的天数
max_allowed_packet 控制MySQL可以连接的包大小,建议设置为32M,如果使用了主从复制,参数应该设置成一致的
skip_name_resolve 禁用DNS查找
sysdate_is_now 确保sysdate()返回确保性日期
read_only 禁止非super权限的用户写操作 注:建议在主从复制中的从库开启此功能。以确保不能修改从库中的操作,只能从主库同步过来
skip_slave_start 禁用Salve自动恢复(从库中的设置使用)
sql_mode 设置MySQL所使用的SQL模式 (谨慎操作,可能会造成MySQL无法执行)
① strict_trans_tables 给定的数据如果不能插入到数据库中,对事务引擎会终端操作,对非事务引擎是没有影响的
② no_engine_subitiution 在create table中指定engines的时候,如果引擎不可用,不会使用默认引擎建立表
③ no_zero_date 不能再表中插入0年0月0日的日期
④ no_zero_in_date 不接受一部分的为0的日期
⑤ noly_full_group_by 其他常用的配置参数
sync_binlog 控制MySQL如何向磁盘刷新binlog
tmp_table_size 和 max_heap_table_size 控制内存临时表大小(不宜设置的太大,以避免内存的溢出)
max_connections 控制允许的最大连接数(默认为100,有点小,根据自己的业务适当的调整大小)

什么影响了性能

数据库设计对性能的影响
1、过分的反范式化为表建立太多的列
2、过分的范式化造成太多的表关联(关联的表尽可能的控制在10个之内)
3、在OLTP环境中使用不恰当的分区表
4、使用外键保证数据的完整性

总结

性能优化的顺序
1、数据库结构设计和SQL语句
2、数据库存储引擎的选择参数配置
3、系统选择及优化
4、硬件升级

版权所有,转载请注明出处!http://www.cnblogs.com/demon89/p/8490229.html

MySQL的常见存储引擎介绍与参数设置调优的更多相关文章

  1. MySQL的常见存储引擎介绍与参数设置调优(转载)

    原文地址:http://www.cnblogs.com/demon89/p/8490229.html MySQL常用存储引擎之MyISAM 特性: 1.并发性与锁级别 2.表损坏修复 check ta ...

  2. 关于MySql 数据库InnoDB存储引擎介绍

    熟悉MySQL的人,都知道InnoDB存储引擎,如大家所知,Redo Log是innodb的核心事务日志之一,innodb写入Redo Log后就会提交事务,而非写入到Datafile.之后innod ...

  3. mysql之innodb存储引擎介绍

    一.Innodb体系架构 1.1.后台线程 后台任务主要负责刷新内存中的数据,保证缓冲池的数据是最近的数据,此外还将修改的数据刷新到文件磁盘,保证在数据库发生异常的情况下Innodb能恢复到正常的运行 ...

  4. (转)Mysql技术内幕InnoDB存储引擎-事务&备份&性能调优

    事务 原文:http://yingminxing.com/mysql%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95innodb%E5%AD%98%E5%82%A8%E5%BC ...

  5. 关于线上JVM动态参数设置调优

    p.p1 { margin: 0; -webkit-hyphens: auto; font: 16px Arial; color: rgba(68, 68, 68, 1); -webkit-text- ...

  6. 转 open_cursors参数设置调优

    https://www.cnblogs.com/Peyton-for-2012/archive/2013/05/07/3065058.html

  7. MySql的存储引擎介绍

    下面主要介绍InnoDB.MyISAM和MEMEORY三种存储引擎. InnoDB存储引擎 InnoDB遵循CNU通用公开许可(GPL)发行.InnoDB已经被一些重量级互联网公司所采用,如雅虎.Sl ...

  8. mysql 存储引擎介绍

    一  存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念,后面我们还会说,但是现在要确定这一点. 在讲清楚什么是存储引擎之前,我们先来个比喻, ...

  9. {MySQL存储引擎介绍}一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用

    MySQL存储引擎介绍 MySQL之存储引擎 本节目录 一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用 一 存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是 ...

随机推荐

  1. python_如何在一个for循环中迭代多个可迭代对象?

    案例: 某班学生期末考试成绩,语文.数学.英语分别存储在3个列表中,同时迭代三个列表.,计算每个学生的总分(并行) 某年级有4个班,某次英语成绩分别记录在4个列表中,依次迭代每个列表,统计全年级高于9 ...

  2. redis五大类型用法

    Redis五大类型:字符串(String).哈希/散列/字典(Hash).列表(List).集合(Set).有序集合(sorted set)五种Controller:@Resource RedisTe ...

  3. Java并发编程的艺术读书笔记(1)-并发编程的挑战

    title: Java并发编程的艺术读书笔记(1)-并发编程的挑战 date: 2017-05-03 23:28:45 tags: ['多线程','并发'] categories: 读书笔记 --- ...

  4. Linux实践篇--crontab定时任务

    原文出处:http://www.cnblogs.com/tracy/archive/2011/12/27/2303788.html.感谢作者的无私分享 一.  Crontab 介绍           ...

  5. Ubuntu 安装 Nginx 实现反向代理

    安装Nginx依赖库(ubuntu平台) 最近域名通过了备案, 想着应用总不能带着端口号访问吧, 于是在网上踩了很多坑, 终于找到了一步直达的方法,起码这一次很顺利的实现了 安装gcc g++的依赖库 ...

  6. android 页面的切换

    startActivity后加:IntentHelper.jump(mContext, MyBalanceActivity.class);activity.overridePendingTransit ...

  7. Struts2是什么?

    Struts2是什么: Struts2是整合了struts1和webwork的技术优点的使用广泛的MVC框架: Struts2的特点: 1.基于MVC框架,结构清晰,便于开发人员掌控开发流程: 2.使 ...

  8. 揭开Java内存管理的面纱

    前言 相对于C.C++这些高性能语言,Java有着让此类程序员羡慕的功能:内存自动管理.似乎这样,Java程序员不用再关心内存,也不用去了解相关知识.但结果真的是这样吗?特别对于我们这种Android ...

  9. java for循环增强(foreach)

    for循环增强,在此之前还不知道foreach有这样的功能,先鄙视一下自己,留给自己看: 功能: ***若List用foreach : [  for(Student stu : list)  ]这种形 ...

  10. 《.NET 设计规范》第 8 章:使用规范

    第 8 章:使用规范 8.1 数组 要在公共 API 中优先使用集合,避免使用数组. 不要使用只读的数组字段.虽然字段本身是只读的,用户不能修改它们,但用户可以修改数组中的元素. 考虑使用不规则数组, ...