Chinaunix首页 | 论坛 | 博客
  • 博客访问: 352429
  • 博文数量: 166
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1640
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-05 11:44
个人简介

文章不在长,坚持不懈记录下努力前行的脚步

文章分类

全部博文(166)

文章存档

2017年(19)

2016年(59)

2015年(88)

我的朋友

分类: Mysql/postgreSQL

2016-01-08 09:20:07

为了降低基于主键查询的io,InnoDB采用聚簇索引的方式存储数据。

1.如果你的数据库服务器出了软硬件的问题导致server崩溃,不管此时数据库正在处理什么,你只需重启数据库服务而不需要做任何处理,崩溃前已提交的事务不会有什么改变,未提交的事务就回滚他,重启服务后,将会从结束的地方从新开始未提交的事务;

2.被访问的表的数据和索引都会被cache到buffer pool中,频繁访问的数据直接在内存中处理;

3.数据分割,使用外键级联处理数据保证数据一致性;

4.磁盘或内存中数据损坏,InnoDB的chechksum机制会校验并恢复数据;

5.为表设计恰当的主键,对这些列的操作会被自动的优化,在where,order by,group by,join中引用主键列是非常快的;

6.InnoDB通过change buffering优化了DML操作,不但实现了数据的并发读写,change buffering还精简了磁盘io的调度;

7.InnoDB对大表的查询也进行了优化,当多次访问同一张表的相同记录的时候,一种叫自哈希索引的机制能加速查询;

8.压缩表和索引;

9.创建和删除索引对性能的影响更小;

10.truncate一个独立表空间的表很快,并且能释放磁盘空间为系统重用;

11.动态表中存储blob和long text类型数据更有效;

12.通过information_schema表监控存储引擎的运行情况;

13.通过performance_schema监控存储引擎的性能;

InnoDB最新变化
mysql目前还在努力解决以前使用myisam的案例(情况)
1.支持全文索引;
2.对只读和近乎只读进行了优化。使用自动提交模式自优化innodb查询,并且可以通过start  transaction read only显式声明事务只读;
3.现在分布在只读介质上的应用可以用innodb表;

针对innodb表的sql优化
1.为频繁查询的表列创建主键,或者自增id主键;

2.多表查询增减外键,键值列数据类型一致;

3.关闭自动提交,设置一个提交的上线值;

4.分组合并提交,减少提交次数;

5.不用lock tables语句,mvcc已经提供了很好的并发控制,for update 加where条件提高并发(当然在索引设计要合理的基础上);

6.启用innodb_file_per_table;

7.评估压缩表的功能-- create table row_format=compression;

8.启动server时带--sql_mode=NO_ENGINE_SUBSTITUTION以防创建表是有不同的存储引擎;

Testing and Benchmarking with InnoDB as Default Storage Engine
1.my.cnf文件中mysqld组添加default-storage-engine=innodb来设置默认存储引擎;
阅读(770) | 评论(0) | 转发(0) |
0

上一篇:change buffering

下一篇:20160111-(优化日记)

给主人留下些什么吧!~~