mysql
tonyXf121
这个作者很懒,什么都没留下…
展开
-
mysql explain介绍
在 explain的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快。如果由于不恰当使用索引而引起一些问题的话,可以运行 analyze table来更新该表的统计信息,例如键的基数,它能帮您在优化方面做出更好的选择。explain 返回了一行记录,它包括了 select语句中用到的各个表的信息。这些表在结果中按照mysql即将执行的查询中读取的转载 2012-06-17 10:30:05 · 599 阅读 · 0 评论 -
B+/-Tree原理及mysql的索引分析
B+/-Tree原理B-Tree介绍B-Tree是一种多路搜索树(并不是二叉的): 1.定义任意非叶子结点最多只有M个儿子;且M>2; 2.根结点的儿子数为[2, M]; 3.除根结点以外的非叶子结点的儿子数为[M/2, M]; 4.每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)原创 2012-12-23 17:09:10 · 39709 阅读 · 4 评论 -
mysql 事务隔离级别
SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。本文将以具体的例子来讲解这4类隔离级别。Read Uncommitted(读取未提交内容)在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的原创 2012-12-26 11:47:58 · 6402 阅读 · 0 评论 -
mysql触发器的作用及语法
触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。触发器的作用:1. 安全性。可以基于数据库的值使用户具有操作数据库的某种权利;可以基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据;可以基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%。2. 审计。原创 2012-12-04 15:53:27 · 8097 阅读 · 0 评论 -
mysql配置中的一些重要参数
虽然运维同事会对mysql做最优配置,但我们也需要知掌握mysql配置中对性能影响比较大的一些配置项。max_connectionsMySql的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,MySql会为每个连接提供连接缓冲区,就会开销越多的内存,连接数太大,服务器消耗的内存越多,以至于影响服务器性能原创 2012-09-16 22:28:22 · 9159 阅读 · 1 评论 -
hash和btree索引的区别
这两天有个很强烈的感觉就是自己在一些特别的情况下还是hold不住,脑子容易放空或者说一下子不知道怎么去分析问题了,比如,问“hash和btree索引的区别”,这很难吗,只要掌握了这两种数据结构稍加分析就能得出答案,结果是一下子不知道从何说起。进入正题吧,这两者有啥区别。1. hash索引查找数据基本上能一次定位数据,当然有大量碰撞的话性能也会下降。而btree索引就得在节点上挨着查找了,很明显原创 2012-09-13 22:23:14 · 16176 阅读 · 1 评论 -
mysql replication 主从复制实现性能扩展
mysql replication能异步的将一个mysql server的instance中的数据完整的复制到另一个mysql server的instance中,虽然是异步的,但延迟非常少,利用这样优越的性能就能保证系统数据的安全性和系统可扩展的可靠性。replication优点replication功能的优点很明显,将一台数据库上的数据复制到多台数据库中,组成一个mysql集群,对外服务原创 2012-08-14 22:17:20 · 2799 阅读 · 0 评论 -
mysql的order by,group by和distinct优化
order by,group by和distinct三类操作是在mysql中经常使用的,而且都涉及到排序,所以就把这三种操作放在一起介绍。order by的实现与优化order by的实现有两种方式,主要就是按用没用到索引来区分:1. 根据索引字段排序,利用索引取出的数据已经是排好序的,直接返回给客户端;2. 没有用到索引,将取出的数据进行一次排序操作后返回给客户端。下面通过示原创 2012-08-02 10:11:35 · 11589 阅读 · 0 评论 -
mysql join的实现原理及优化思路
join的实现原理join的实现是采用Nested Loop Join算法,就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果有多个join,则将前面的结果集作为循环数据,再一次作为循环条件到后一个表中查询数据。接下来通过一个三表join查询来说明mysql的Nested Loop Join的实现方式。sele原创 2012-07-31 09:25:40 · 21734 阅读 · 5 评论 -
mysql的query优化
我们统称由客户端发送给服务端的命令叫query。mysql server的连接线程接收到客户端发送过来的query之后会对query进行相应的分析,根据分析数据,mysql的查询优化器(QueryOptimizer)会得出一个mysql认为最优化的数据访问方式,即“执行计划”,然后根据得出的“执行计划”通过存储引擎的相应的接口来获取数据,将取出的数据进行一定的处理后按照客户端要求的格式返回。m原创 2012-07-28 14:18:39 · 1991 阅读 · 0 评论 -
mysql query cache优化
query cache原理当mysql接收到一条select类型的query时,mysql会对这条query进行hash计算而得到一个hash值,然后通过该hash值到query cache中去匹配,如果没有匹配中,则将这个hash值存放在一个hash链表中,同时将query的结果集存放进cache中,存放hash值的链表的每一个hash节点存放了相应query结果集在cache中的地址,以及原创 2012-08-12 16:41:59 · 12338 阅读 · 0 评论 -
mysql schema设计优化
mysql前期的设计问题会给后期的开发维护造成很大的问题,所以在mysql数据库的设计阶段就应该保证尽可能的高效,尽可能的减小后期开发和维护代价。如何设计1.适度冗余, 让query尽量减少join虽然optimizer会对query进行一定的优化,但有时候遇见复杂的join,优化效果并不令人满意,再加上本来join的性能开销,所以需要尽量的减少join,而需要通过冗余来实现。比如:有原创 2012-08-09 14:39:56 · 4762 阅读 · 1 评论 -
mysql 索引优化
1,创建索引对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会引起致命的性能下降。但是也不是什么情况都非得建索引不可,比如性别可能就只有两个值,建索引不仅没什么优势,还会影响到转载 2012-06-25 21:20:09 · 639 阅读 · 0 评论 -
mysql锁定机制研究
在并发情况下,为了保证数据的一致完整性,我们需要对数据库进行锁操作,锁定机制的选择直接影响到数据库的并发能力和性能,所以在选择锁定机制的时候一定要谨慎。mysql主要使用了三种类型的锁定机制,按照颗粒度从小到大排序为:行级锁定、页级锁定和表级锁定,随着颗粒度的增加,并发能力降低,消耗也降低,发生死锁的概率也降低。本文主要通过MyISAM和Innodb两种存储引擎来讲解表级锁定和行级锁定。原创 2012-07-24 22:37:47 · 1007 阅读 · 0 评论 -
mysql索引的正确设计和适用
1. 索引的存储分类 MyISAM存储引擎的表的数据和索引时自动分开存储的,各自是独立的一个文件;InnoDB存储引擎的表的数据和索引时存储在同一表空间里面,但可以有多个文件组成。MySQL中索引的存储类型目前只有两种(BTREE和HASH),具体和表的存储引擎相关;MyISAM和InnoDB存储引擎都只支持BTREE索引;MEMORY/HEAP存储引擎可以支持HASH和BTREE索引。转载 2012-06-16 16:43:03 · 1016 阅读 · 0 评论 -
mysql 确定前缀索引长度方法
应用场景:数据库里有个地址(address)字段,类型为varchar(100),业务决定了要经常根据address来进行查询。确定选择性:SELECT count(DISTINCT(address))/count(*) AS Selectivity FROM info;+-------------+| Selectivity |+-------------+| 0.原创 2012-07-19 12:16:38 · 5285 阅读 · 1 评论 -
MySQL数据库性能优化之表结构优化
转自 http://www.phpchina.com/archives/view-41382-1.html很多人都将作为数据库表结构设计“圣经”,认为只要按照这个范式需求设计,就能让设计出来的表结构足够优化,既能保证性能优异同时还能满足扩展性要求。殊不知,在N年前被奉为“圣经”的数据库设计3范式早就已经不完全适用了。这里我整理了一些比较常见的数据库表结构设计方面的优化技巧,希望对大家有用。转载 2012-07-10 19:42:23 · 799 阅读 · 0 评论 -
mysql 查询优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id f转载 2012-06-27 09:28:14 · 603 阅读 · 0 评论 -
使用MySQL UDF更新memcache缓存
MySql UDF介绍UDF是User Defined Function的缩写,指 Mysql 的用户定义函数,应用可以通过使用这些函数从 Mysql5.0 以上版本的数据库中访问 Memcached 服务以写入或者获得数据。此外,从 Mysql5.1 开始支持触发器,这样就可以在触发器中使用 UDF 直接更新 Memcached 的内容,减轻了应用程序设计和编写的复杂性。下面我们简要介绍 U原创 2013-01-06 16:25:45 · 4011 阅读 · 2 评论