mysqlbinlog

是什么?

数据目录下的如下文件: mysql-bin.xxxxxx

作用?

记录数据库内部增删改查对mysql数据库有更新的内容的记录

三种模式?

statement level 模式: 缺点是不够细致

row level 模式:

日志会记录每一行数据被修改的形式

(一下子修改多行其实就一条语句, 但是它会记录成多行)

优点: 记录每一行的细节, 可以记录function/trigger/存储过程

mixed level 模式: 混合模式, 自动判断该使用statement还是row level

三种模式的配置?

log-bin=mysql-bin

binlog_format = "MIXED"

在线修改即时生效

mysql> set global binlog_format="MIXED";

mysql日志

错误日志:

[mysqld_safe]

log-error = /usr/local/mysql/data/mysql.err

二进制日志:

log-bin=mysql-bin

查询日志:

普通日志:

gerneral_log = OFF   #一般不开启, 没什么作用, 而且文件会特别大

gerneral_log_file = /usr/local/mysql/data/mysql.log

慢查询日志:

long_query_time = 1

log-slow-queries = /usr/local/mysql/data/slow.log

log_queries_not_using_indexes

存储引擎

体系结构图

事务的四大特性(ACID)

原子性

一致性

隔离性

持久性

start  transaction;

commit;

rollback;

myisam引擎特点

不支持事务

表级锁定

读写互相阻塞

只会缓存索引

读取速度较快, 占用资源较少

不支持外键约束, 但支持全文索引

myisam引擎适合的生产环境

不需要事务支持

一般为读数据比较多写比较多的场合

读写并发访问相对较低的业务(锁机制问题)

数据修改较少的业务(阻塞问题)

以读为主的业务

硬件资源比较差的机器

小结: 适合纯读或纯写的业务

myisam调优

设置合适的索引(缓存机制)

调整读写优先级

启用延迟插入(尽可能多条数据一次写入)

尽量顺序操作, 让insert数据都写入到尾部, 减少阻塞

分解大的操作, 减少单个操作的阻塞时间

降低并发数(要用到队列机制)

对于相对静态的数据, 充分利用query_cache或memcached服务来进行缓存

query_cache_size=2M

query_cache_limit=1M

query_cache_min_res_unit=2K

myisam的count只有在全表扫描的时候才特别高效 (即不能带where条件)

可以把主从同步的主库使用innodb, 从库使用myisam (来回复制数据会很麻烦, 不建议使用!!)

innodb引擎

支持事务

行级锁定 (全表扫描仍然是表锁)

读写阻塞与事务隔离级别相关

有非常高效的缓存特性: 能缓存索引和数据

整个表和主键以cluster方式存储, 组成一颗平衡树

所有 secondary index 都会保存主键信息

支持分区, 表空间

支持外键约束, 5.5版本以后支持全文索引

和myisam相比, innodb对硬件要求比较高

innodb引擎适合的生产环境

需要事务支持的业务

高并发场景(请先确保已经建立了索引)

数据读写都较为频繁的场景

数据一致性要求较高的业务

硬件设备好, 可以利用innodb的缓存能力

innodb调优

主键尽可能小, 避免给secondary index带来过大的空间负担

避免全表扫描, 因为会使用表锁

尽可能缓存所有的索引和数据

在大批量小插入的时候, 尽量自己控制事务

合理设置 innodb_flush_log_at_trx_commit参数(每隔几秒刷新log到磁盘), 不要设置为0, 即不要过度追求安全性

避免主键更新, 因为这会带来大量的数据移动

innodb重要参数

innodb_buffer_pool_size = 2048M #缓存池, 设置为机器总内存的50%--80%

批量更改存储引擎

法1: alter

ALERT TABLE tb1 ENGINE=INNODB;

法2: 使用sed对备份内容进行替换

nohup sed -e '/sMyISAM/InnoDB/g' tb1.sql > tb1_1.sql

法3: mysql_convert_table_format命令

mysql_convert_table_format --user=root --password=123456 --socket=/data/3306/mysql.sock --engine=MyISAM db1 tb1

;

mysql系列之9.mysql日志&存储引擎的更多相关文章

  1. MySQL - 常见的三种数据库存储引擎

    原文:MySQL - 常见的三种数据库存储引擎 数据库存储引擎:是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据.不同的存储引擎提供不同的存储机制.索引技巧. ...

  2. MySQL性能优化(一)-- 存储引擎和三范式

    一.MySQL存储引擎 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存 ...

  3. 【MySQL】(二)InnoDB存储引擎

    InnoDB是事务安全的MySQL存储引擎,设计上采用了类似于Oracel数据库的架构.通常来说,InnoDB存储引擎是OLTP应用中核心表的首选存储引擎.同时,也正是因为InnoDB的存在,才使My ...

  4. MySQL查看和修改表的存储引擎(转载+加点东西)

    1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a.show table status from YOUR_DB_NAME where name='YOU ...

  5. MySQL查看和修改表的存储引擎

    1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a.show table status from db_name where name='table_na ...

  6. mysql事务,视图,权限管理,索引,存储引擎(胖胖老师)

    1: 视图什么是视图    视图是一个虚拟表, 它的内容来源于查询的实表, 本身没有真正的数据;视图的作用    对于复杂的查询时,每次查询时都需要编写一些重复的查询代码让编写sql的效率低下, 为了 ...

  7. MySQL学习【第十篇存储引擎实际应用】

    一.将现有的myiasm引擎转化为innodb引擎 1.首先我们知道myisam有几点特别烦 a( 运用的是表级锁 b( 不支持csr(故障自动恢复) 2.mysql的5.1.177版本innodb引 ...

  8. Mysql加锁处理分析-基于InnoDB存储引擎

    MVCC MySQL INNODB存储引擎,实现的是基于多版本的并发控制协议——MVCC (Multi-VERSION Concurrency Control).MVCC最大的好处,相信也是耳熟能详: ...

  9. MySQL学习【第十一篇存储引擎之事务解释】

    一.innodb的核心特点------事务 1.什么是事务 在一组数据操作执行步骤,这些步骤被视为一个单元,主要针对dml语句(update.delete.insert) 2.事务ACID特性 Ato ...

随机推荐

  1. Unix进程和线程管理及其异同

    Unix进程和线程管理及其异同 一,进程 1,什么是进程 在最初的单处理器系统中,系统中的多道程序按照一定规则切换而实现多任务处理,后来发现多个程序并发导致系统资源被共享,为了描述和管理程序对共享资源 ...

  2. chrome禁用JS

    有一些网站不允许文本选择,对于我这种伸手党实在是很不友好.当然像这类的功能,应该是用JS来控制. chrome的话,JS禁用可以在地址栏旁边的一个下拉列表那里选.

  3. 代码Rework中的反思

    以前编码只是关注能写出来,并让程序运行就完事,这是非常错误的想法. 让我们重新思考软件设计中的一些问题吧! 软件设计就像设计房屋,设计器具,是一个道理.软件的复杂度和bug完全是自己造成的,要设计好的 ...

  4. z-index 基础详解

    关于z-index网上其实有不少博文,写得也不错,不过有些帖子比较旧,而IE也已经更新到了IE11了,所以还是重新总结一下.由于 z-index 的属性表现和层级有关,有些特点在某些层级下才表现出来, ...

  5. ReentrantReadWriteLock读写锁

    概述 ​ ReentrantReadWriteLock是Lock的另一种实现方式,我们已经知道了ReentrantLock是一个排他锁,同一时间只允许一个线程访问,而ReentrantReadWrit ...

  6. ACM信息汇总

    一.ACM算法总结及刷题参考 (摘自:http://www.cnblogs.com/flipped/p/5005693.html) 初期: 一.基本算法: (1)枚举. (poj1753,poj296 ...

  7. [BUG] CS0234: 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?)

    写在前面 在浏览view的时候,突然出现这个错误,不过还是很好解决的. bug 解决方案

  8. js中高效拼接字符串

    写在前面 面试的过程,很有可能面试到c#那种方式拼接字符串更高效,然后就会引申到js中的拼接方式.这也是我在面试中遇到的问题,当时,也真没比较过js中到底哪种方式更高效.然后,跟猜测一样,说了使用数组 ...

  9. JavaScript 深克隆

    深克隆 function judgeType(arg){//判断js数据类型 return Object.prototype.toString.call(arg).slice(8,-1); } fun ...

  10. Jsp2.0自定义标签(第二天)——自定义循环标签

    今天是学习自定义标签的第二天,主要是写一个自定义的循环标签. 先看效果图: 前台页面Jsp代码 <%@ page language="java" contentType=&q ...