mysql internal
文章平均质量分 81
weiliu1463
这个作者很懒,什么都没留下…
展开
-
mysql索引原理之聚簇索引
索引分为聚簇索引和非聚簇索引。以一本英文课本为例,要找第8课,直接翻书,若先翻到第5课,则往后翻,再翻到第10课,则又往前翻。这本书本身就是一个索引,即“聚簇索引”。如果要找"fire”这个单词,会翻到书后面的附录,这个附录是按字母排序的,找到F字母那一块,再找到"fire”,对应的会是它在第几课。这个附录,为“非聚簇索引”。由此可见,聚簇索引,索引的顺序就是数据存放的顺序原创 2014-05-29 21:20:15 · 688 阅读 · 0 评论 -
mysql索引原理之B+/-Tree
索引,是为了更快的查询数据,查询算法有很多,对应的数据结构也不少,数据库常用的索引数据结构一般为B+Tree。1、B-Tree关于B-Tree的官方定义个人觉得比较难懂,通俗一点就是举个例子。假如:一本英文字典,单词+详细解释组成了一条记录,现在需要索引单词,那么以单词为key,单词+详细解释为data,B-Tree就是以一个二元组{key,data}来定义一条记录。如果一个节点有原创 2014-05-29 21:31:50 · 706 阅读 · 0 评论 -
清理MySQL数据库的过期binlog日志
这2天业务量增长比较快,猜测可能是产生了过多的binlog导致的。[xxx@xxxx cacti]$ ssh xxxx " sudo -u mysql ls /mysqldata/data/" |grep mysql-bin mysql-bin.001350 ....... mysql-bin.002352 mysql-bin.log.index原创 2014-05-26 13:48:17 · 606 阅读 · 0 评论 -
GAP LOCK引起的死锁
先了解一下什么是GAP LOCK在INNODB中,record-level lock大致有三种:Record, Gap, and Next-KeyLocks。简单的说,RECORDLOCK就是锁住某一行记录;而GAPLOCK会锁住某一段范围中的记录;NEXT-KEYLOCK则是前两者加起来的效果。下面是MYSQL官方文档中相关内容的链接http://dev.mysql.co原创 2014-05-29 14:08:31 · 1747 阅读 · 0 评论 -
MySQL存储引擎MyISAM和InnoDB的区别及mysql优化
学习的过程中从网上看到的,自己综合了一下,把看到的东西作了一个汇总……优化WHERE从句:即使你只搜索一行MySQL也会查询整个表,因此,建议你当只需要一条结果时将limit设置为1。通过这样做,可以避免系统贯穿搜索整个表,从而可以尽可能快找到与你需求相匹配的记录。MySQL的每个数据库目录中有一个文件db.opt,该文件主要用来存储当前数据库的默认字符集和字符校验规则转载 2014-05-26 12:55:34 · 405 阅读 · 0 评论 -
sync_binlog
从库提供read服务,单独创建用户的时候建议不写入binlog日志 在当前client连接的sessiion中,执行操作的时候,关闭二进制日志,这样下面的所有ddl以及dml操作sql不会写入到binlog中,也不会被同步到slave中。set sql_log_bin =0; 授予访问权限GRANT select ON cart.* TO 'xxxx'@'xxxxxx;原创 2014-05-26 17:06:33 · 1272 阅读 · 0 评论 -
mysql事务提交
5.3.1事务提交流程MySQL的事务提交逻辑主要在函数ha_commit_trans中完成。事务的提交涉及到binlog及具体的存储的引擎的事务提交。所以MySQL用2PC来保证的事务的完整性。MySQL的2PC过程如下:(1)先调用binglog_hton和innobase_hton的prepare方法完成第一阶段,binlog_hton的papare方法实际上什么也没原创 2014-05-29 17:42:20 · 1075 阅读 · 0 评论 -
索引与优化
写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),原创 2014-05-29 18:07:21 · 556 阅读 · 0 评论 -
MySQL配置文件my.cnf优化详解
1、配置参数MySQL有两种途径途径了解其的配置参数,一个是MySQL交互模式下的命令SHOW VARIABLES,一个使用mysqladmin variables 查询。MySQL的配置参数分为2种,全局的和局部的。局部的配置变量可以在每次会话中自己更改。从MySQL 4.0以后开始,在SHOW VARIABLES中显示的参数,大部分可以动态使用SET命令进行更改。转载 2014-05-26 13:18:06 · 728 阅读 · 0 评论 -
数据库服务器参数优化mycnf,16G内存8核CPU,
业务场景:在线更新系统,db服务器内存16G,8核,dell的pc服务器。qps: 200个左右 tps: 1个左右 一分钟50几个sort_buffer_size = 32M 大了, 8M即可read_buffer_size = 32M 大了,8M即可read_rnd_buffer_size = 16M 大了,8M即可table_open_cache =转载 2014-05-26 16:55:07 · 888 阅读 · 0 评论 -
Query Cache
MySQL Query Cache 就是用来缓存和 Query 相关的数据的。具体来说,Query Cache 缓存了我们客户端提交给 MySQL 的 SELECT 语句以及该语句的结果集。大概来讲,就是将 SELECT 语句和语句的结果做了一个 HASH 映射关系然后保存在一定的内存区域中。在大部分的 MySQL 分发版本中,Query Cache 功能默认都是打开的,我们可以通过调整 My原创 2014-06-24 16:51:08 · 722 阅读 · 0 评论 -
MySQL 索引原理解析
Reference: http://tech.it168.com/a2011/0711/1216/000001216087_all.shtml 内节点不存储data,只存储key;叶子节点不存储指针。 同样也是一颗B+Tree,data域保存数据记录的地址。因此,MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的值,然后以原创 2014-05-26 18:39:47 · 382 阅读 · 0 评论 -
Mysql架构
写在前面:最早接触的MySQL是在三年前,那时候MySQL还是4.x版本,很多功能都不支持,比如,存储过程,视图,触发器,更别说分布式事务等复杂特性了。但从5.0(2005年10月)开始,MySQL渐渐步入企业级数据库的行列了;复制、集群、分区、分布式事务,这些企业级的特性,使得现在的MySQL,完全可以应用于企业级应用环境(很多互联网公司都用其作为数据库服务器,尽管节约成本是一个因素,但是没有强原创 2014-05-29 18:10:57 · 568 阅读 · 0 评论