摘要:原文地址:http://chenzhou123520.iteye.com/blog/1863407 乐观锁介绍: 乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。那么我们如何实现乐观锁呢,一般来说有以下...
阅读全文
摘要:B-Tree和B+Tree 目前大部分数据库系统及文件系统都采用B-Tree或其变种B+Tree作为索引结构。 首先,对单个节点来说,是一个key value结构,key是作引的列,value有两种,对于聚簇索引来说,value就是数据,对于二级索引来说,value就是指向数据的地址。 B-Tree的结构如下: B-tree的特点是非叶子节点上也有数据。 B+Tree是B-...
阅读全文
摘要:注意:下面示例中的key1和key2代表两个索引,key_part1和key_part2代表一个复合索引的第一列和第二列。non_key代表非索引列。 优化SQL语句 where语句优化: mysql会自动执行的一些优化有: 删除不必要的括号: 常量条件替换 (a b>5 AND b=c AND a=5 常量条件去除 (B>=5 AND B=5) ...
阅读全文
摘要:查询缓存: 在解析一个sql之前,如果查询缓存是打开的,mysql会去检查这个查询(根据sql的hash作为key)是否存在缓存中,如果命中的话,那么这个sql将会在解析,生成执行计划之前返回结果。 ps:在5.1版本之前,使用=?参数这种不能使用查询缓存。 查询优化器: oracle使用基于cost的优化器。 可以使用last_query_cost来获取当前回话的上一个查询的cost: /*使用...
阅读全文
摘要:整形的取值范围: TypeStorageMinimum ValueMaximum Value(Bytes)(Signed/Unsigned)(Signed/Unsigned)TINYINT1-1281270255SMALLINT2-3276832767065535MEDIUMINT3-83886088388607016777215INT4-214748364821474...
阅读全文
摘要:以下内容翻译自mysql5.6官方手册。 InnoDB是一种通用存储引擎,可平衡高可靠性和高性能。在MySQL 5.6中,InnoDB是默认的MySQL存储引擎。除非已经配置了不同的默认存储引擎,否则发出没有ENGINE =子句的CREATE TABLE语句会创建一个InnoDB表。 InnoDB的主要优势包括: 其DML操作遵循ACID模型,具有提交,回滚和崩溃恢复功能的事务以保护用户数据。...
阅读全文
摘要:可扩展性的定义:当增加资源以获得执行更多的工作系统能获得划算的同等提升。 向上扩展(垂直扩展):提升服务器的硬件性能。 向外扩展(水平扩展):一般都是复制,拆分,数据分片(sharding)。 复制:如主从复制分担读的压力。 拆分:如按照功能拆分,将不同的表放在不同的库上。 数据分片(shardin
阅读全文
摘要:复制功能不仅能够构建高可用的应用,同时也是高可用性,可扩展性,灾难恢复,备份以及数据仓库等工作的基础。 mysql支持两种复制方式:基于语句的复制和基于行的复制。基于语句的复制(也成为逻辑复制)是早期版本提供的功能,基于行的复制是5.1版本加入的。这两种方式都是通过在主库上记录二进制日志,在从库上重
阅读全文
摘要:oracle没有offet,limit,在mysql中我们用它们来控制显示的行数,最多的是分页了。oracle要分页的话,要换成rownum。 oracle建表时,没有auto_increment,所有要想让表的一个字段自增,要自己添加序列,插入时,把序列的值,插入进去。 oracle有一个dual
阅读全文
摘要:MySQL 对 SQL 有很多扩展,有些用起来很方便,但有一些被误用之后会有性能问题,还会有一些意料之外的副作用,比如 REPLACE INTO。 MySQL 在数据冲突时实际上是删掉了旧记录,再写入新记录,这是使用 REPLACE INTO 时最大的一个误区,拿之前的例子来说,执行完 REPLAC
阅读全文
摘要:分区表: 分区表是一个独立的逻辑表,底层通过多个物理表实现。 mysql实现分区表的方式是对底层表的封装。这意味着没有全局索引,索引是建立在底层的每个表上的(跟ORACLE不一样)。 用到分区表的几种情况: 数据量非常大,无法全部放到内存中。 只有部分数据是热点数据,其他数据是历史数据。 限制: 一
阅读全文
摘要:EXPLAIN: extended关键字:在explain后使用extended关键字,可以显示filtered列和warning信息。在较旧的MySQL版本中,扩展信息是使用EXPLAIN EXTENDED生成的。 该语法仍然被识别为向后兼容,但扩展输出现在默认启用,因此EXTENDED关键字是多
阅读全文
摘要:原文地址:http://www.cnblogs.com/zengkefu/p/5684101.html 一什么是"索引条件下推" "索引条件下推",称为 Index Condition Pushdown (ICP),这是MySQL提供的用某一个索引对一个特定的表从表中获取元组",注意我们这里特意强调
阅读全文
摘要:b-tree索引 一定程度上说,mysql只有b-tree索引。他没有bitmap索引。还有一个叫hash索引的,只在Memory存储引擎中才有。 b-tree索引跟oracle中的大同小异。 mysql中关于b-tree的限制: 只有做全值拼配或者根据左前缀匹配。我猜测是因为mysql没有基于co
阅读全文
摘要:基本原则: 更小的通常更好:占用更少的磁盘 内存和cpu缓存。如varchar(2)和varchar(100)。 简单就好:比如整形比字符型代价更低。使用日期型来存储日期而不是字符串。使用整形存储ip地址。 尽量避免null:如果可以 加上not null约束。因为可以null的列使索引,索引统计,
阅读全文
摘要:mysql逻辑架构图: 第一层 客户端 第二层(服务层):针对所有类型的存储引擎可以公共提取的部分。将存储引擎抽离之后的其他部分都在这里。如:查询解析,分析优化,内置函数,存储过程,触发器,视图。 第三层(存储引擎层):存储引擎负责mysql数据的存储和提取。服务器通过API与存储引擎进行通信。这些
阅读全文
摘要:mysql远程连接 Host * is not allowed to connect to this MySQL server的错误。 是因为mysql需要授权才能访问。授权方式: 授权给某一个ip: GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.
阅读全文
摘要:[root@localhost mysql]# cd /usr [root@localhost mysql]# mkdir mysql [root@localhost mysql]# cd mysql [root@localhost mysql]# wget https://cdn.mysql.co
阅读全文