zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    js键盘事件以及键盘事件拦截
    JavaScript 延迟加载
    二叉树深度优先 求二叉树最大深度
    css 小知识点:inline/inline-block/line-height
    es6 set
    CSS 水平垂直居中
    js 位运算符
    js 函数重载
    js之单例模式
    js 面向对象 ES5 AND ES6
  • 原文地址:https://www.cnblogs.com/losophy/p/9625586.html
Copyright © 2011-2022 走看看