mysql:优化

看了描述大概明白题主困惑是什么了。题主应该是误以为,由begin,增删改查语句,commit组成的才叫事务。其实一般这种叫事务块。我原来也有这种误解。而没有begin,end包围的单独的每条语句也都是事务(如果开了自动提交的话,而在很多数据库里默认都开,比如题主说的mysql)。再就是写冲突问题。并发写的时候,单机数据库一般就是加锁,像mysql,分布式的多会用乐观提交,先写,提交的时候发现冲突了再回滚。


https://www.jianshu.com/p/9457c88c52d1

 

在创建表的时候可以选择用哪个引擎:

create table xxx
(
...
)
ENGINE=InnoDB;

 

 视图就是检索表的动态变量

 

磁盘IO是数据库的性能瓶颈

 

复制的搭建

数据的切分

 

MyISAM是mysql5.1及之前版本的默认引擎,很久未被更新。现在选用的都是innodb

 

数据库:物理操作系统文件或其他形式文件类型的集合。在mysql数据库中,数据库文件可以是frm、myd、myi、ibd结尾的文件。当使用ndb引擎时,数据库的文件可能不是操作系统上的文件,而是存放于内存之中的文件,但是定义仍然不变。

实例:mysql数据库由后台线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享。需要牢记的是,数据库实例才是真正用于操作数据库文件的。

这两个词有时可以互换使用,不过两者的概念完全不同。在mysql数据库中,实例与数据库的关系通常是一一对应的,即一个实例对应一个数据库,一个数据库对应一个实例。但是,在集群情况下可能存在一个数据库被多个数据实例使用的情况。

 

mysql被设计为一个单进程多线程架构的数据库,这点与SQL Server比较类似,但与Oracle多进程的架构有所不同(Oracle的Windows版本也是单进程多线程架构的)。这也就是说,mysql数据库实例在系统上的表现就是一个进程。

 

mysql由以下几部分组成:

连接池组件

管理服务和工具组件

SQL接口组件

查询分析器组件

优化器组件

缓冲(Cache)组件

插件式存储引擎

物理文件

 

存储引擎是基于表的,而不是数据库。

 

mysql存储

看my.ini/my.cnf文件.的datadir

该文件名下面类似a.frm、a.MYD、a.MYI等就是数据库的文件

 

myisam innodb 区别(不同类型不能相互复制)


 

同大多数数据库一样,InnoDB有页的概念(也可以称为块),页是InnoDB磁盘管理的最小单位。

 

我们知道对于MyISAM引擎而言,数据文件和索引文件是分离的。通过索引查找到后,就得到了数据的物理地址,然后根据地址定位数据文件中的记录即可。这种方式也叫"非聚集索引"。
而对于Innodb引擎而言,数据文件本身是索引文件!通俗点说,叶子节点上,MyISAM存储的是记录的物理地址,而Innodb上存储的是数据内容,这种方式即"聚集索引"。

 

参考:

《mysql技术内幕(innodb存储引擎)》

MyISAM与InnoDB两者之间区别与选择

为什么现在的MySQL都要使用innoDB引擎

InnoDB还是MyISAM 再谈MySQL存储引擎的选择

从程序员的角度深入理解MySQL

 

暂时的学习路线是《MySQL必知必会》-〉《MySQL技术内幕》-〉《高性能MySQL》。


怎样看mysql性能

慢查询日志

mysql> show variables like '%slow%'; 
mysql> show global status like '%slow%'; 

连接数 

mysql> show variables like 'max_connections'; 

进程使用情况

 show global status like ‘Thread%’; 

https://www.cnblogs.com/jackchen001/p/6964411.html

https://www.cnblogs.com/fjping0606/p/5821289.html

 

查询优化、索引优化、库表结构优化(Schema 与数据类型优化 )需要齐头并进,一个不落。

不建议mysql分区表

 

日志

mysql数据库常见的日志文件有:

错误日志(error log)

二进制日志(binlog)

慢查询日志(slow query log)

查询日志(log)

posted @ 2018-09-11 09:17  _raindrop  阅读(106)  评论(0编辑  收藏  举报