简单,可复制

点点滴滴,尽在文中

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 43 下一页

2012年11月13日

摘要: 逻辑模块组成总的来说,MySQL可以看成是二层架构,第一层我们通常叫做SQLLayer,在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql解析,执行计划优化,querycache的处理等等;第二层就是存储引擎层,我们通常叫做StorageEngineLayer,也就是底层数据存取操作实现部分,由多种存储引擎共同组成。所以,可以用如下一张最简单的架构示意图来表示MySQL的基本架构,如图所示:虽然从上图看起来MySQL架构非常的简单,就是简单的两部分而已,但实际上每一层中都含有各自的很多小模块,尤其是第一层SQLLayer,结构相当复杂的。下面我们就分别针对 阅读全文
posted @ 2012-11-13 21:56 ggjucheng 阅读(2930) 评论(0) 推荐(1)

摘要: 前言据说目前MySQL用户已经达千万级别了,其中不乏企业级用户。可以说是目前最为流行的开源数据库管理系统软件了。任何产品都不可能是万能的,也不可能适用于所有的应用场景。那么MySQL到底在什么场景下适用什么场景下不适用呢?1、Web网站系统Web站点,是MySQL最大的客户群,也是MySQL发展史上最为重要的支撑力量,这一点在最开始的MySQLServer简介部分就已经说明过。MySQL之所以能成为Web站点开发者们最青睐的数据库管理系统,是因为MySQL数据库的安装配置都非常简单,使用过程中的维护也不像很多大型商业数据库管理系统那么复杂,而且性能出色。还有一个非常重要的原因就是MySQL是开 阅读全文
posted @ 2012-11-13 21:50 ggjucheng 阅读(13437) 评论(0) 推荐(1)

摘要: mysqldump:数据库备份程序有3种方式来调用mysqldump:mysqldump [options] db_name [tables]mysqldump [options] ---database DB1 [DB2 DB3...]mysqldump [options] --all--database如果没有指定任何表或使用了---database或--all--database选项,则转储整个数据库。备份一个数据库.mysqldump -uroot -p123456 mysql > mysql_backup.sql这里备份了database mysql的结构和数据,生成的sql文 阅读全文
posted @ 2012-11-13 18:13 ggjucheng 阅读(11901) 评论(0) 推荐(1)

2012年11月11日

摘要: 前言在 MySQL 中,线程独享内存主要用于各客户端连接线程存储各种操作的独享数据,如线程栈信息,分组排序操作,数据读写缓冲,结果集暂存等等,而且大多数可以通过相关参数来控制内存的使用量。线程栈信息使用内存(thread_stack)主要用来存放每一个线程自身的标识信息,如线程id,线程运行时基本信息等等,我们可以通过 thread_stack 参数来设置为每一个线程栈分配多大的内存。排序使用内存(sort_buffer_size)MySQL 用此内存区域进行排序操作(filesort),完成客户端的排序请求。当我们设置的排序区缓存大小无法满足排序实际所需内存的时候,MySQL 会将数据写入磁 阅读全文
posted @ 2012-11-11 21:44 ggjucheng 阅读(3203) 评论(2) 推荐(0)

摘要: 前言全局共享内则主要是 MySQL Instance(mysqld进程)以及底层存储引擎用来暂存各种全局运算及可共享的暂存信息,如存储查询缓存的 Query Cache,缓存连接线程的 Thread Cache,缓存表文件句柄信息的 Table Cache,缓存二进制日志的 BinLog Buffer, 缓存 MyISAM 存储引擎索引键的 Key Buffer以及存储 InnoDB 数据和索引的 InnoDB Buffer Pool 等等。下面针对 MySQL 主要的共享内存进行一个简单的分析。查询缓存(Query Cache)查询缓存是 MySQL 比较独特的一个缓存区域,用来缓存特定 Q 阅读全文
posted @ 2012-11-11 21:41 ggjucheng 阅读(1884) 评论(0) 推荐(0)

摘要: 前言MySQL 的存储引擎可能是所有关系型数据库产品中最具有特色的了,不仅可以同时使用多种存储引擎,而且每种存储引擎和MySQL之间使用插件方式这种非常松的耦合关系。由于各存储引擎功能特性差异较大,这篇文章主要是介绍如何来选择合适的存储引擎来应对不同的业务场景。MyISAM1.特性 不支持事务:MyISAM存储引擎不支持事务,所以对事务有要求的业务场景不能使用 表级锁定:其锁定机制是表级索引,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能 读写互相阻塞:不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读 只会缓存索引:MyISAM... 阅读全文
posted @ 2012-11-11 21:32 ggjucheng 阅读(3755) 评论(0) 推荐(0)

摘要: 前言有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧。注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础。优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。 2.降低 CPU 计算 除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了。order by, group by,distinct … 都是消耗 ... 阅读全文
posted @ 2012-11-11 21:26 ggjucheng 阅读(30526) 评论(1) 推荐(12)

摘要: 前言 大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引可以提高数据访问效率。 为什么索引能提高数据访问性能?他会不会有“副作用”?是不是索引创建越多,性能就越好?到底该如何设计索引,才能最大限度的发挥其效能? 这篇文章主要是带着上面这几个问题来做一个简要的分析,同时排除了业务场景所带来的特殊性,请不要纠结业务场景的影响。索引为什么能提高数据访问性能? 很多人只知道索引能够提高数据库的性能,但并不是特别了解其原理,其实我们可以用一个生活中的示例来理解。 我们让一位不太懂计算机的朋友去图书馆确认一本叫做《MySQL性能调优与架构设计》的书是否在藏,这样对他说:“请帮我借一本... 阅读全文
posted @ 2012-11-11 20:58 ggjucheng 阅读(2230) 评论(0) 推荐(0)

摘要: 前言 很多人都将<数据库设计范式>作为数据库表结构设计“圣经”,认为只要按照这个范式需求设计,就能让设计出来的表结构足够优化,既能保证性能优异同时还能满足扩展性要求。殊不知,在N年前被奉为“圣经”的数据库设计3范式早就已经不完全适用了。这里我整理了一些比较常见的数据库表结构设计方面的优化技巧,希望对大家有用。 由于MySQL数据库是基于行(Row)存储的数据库,而数据库操作 IO 的时候是以 page(block)的方式,也就是说,如果我们每条记录所占用的空间量减小,就会使每个page中可存放的数据行数增大,那么每次 IO 可访问的行数也就增多了。反过来说,处理相同行数的数据,需要 阅读全文
posted @ 2012-11-11 19:03 ggjucheng 阅读(4974) 评论(0) 推荐(0)

摘要: MySQL 数据库性能优化之缓存参数优化 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO。本文先从 MySQL 数据库IO相关参数(缓存参数)的角度来看看可以通过哪些参数进行IO优化。query_cache_size/query_cache_type (global) Query cache 作用于整个 MySQL Instance,主要用来缓存 MySQL 中的 R... 阅读全文
posted @ 2012-11-11 18:48 ggjucheng 阅读(7807) 评论(0) 推荐(0)

上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 43 下一页