自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (3)
  • 收藏
  • 关注

转载 MySQL体系结构以及各种文件类型学习汇总

1,mysql体系结构由数据库和数据库实例组成,是单进场多线程架构。数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件可以是frm、myd、myi、ibd等结尾的文件,当使用ndb存储引擎时候,不是os文件,是存放于内存中的文件。数据库实例:由数据库后台进程/线程以及一个共享内存区组成,共享内存可以被运行的后台进程/线程所共享。

2016-08-19 15:26:26 717

转载 MySQL InnoDB的存储结构总结

从物理意义上来讲,InnoDB表由共享表空间、日志文件组(redo文件组)、表结构定义文件组成。若将innodb_file_per_table设置为on,则系统将为每一个表单独的生成一个table_name.ibd的文件,在此文件中,存储与该表相关的数据、索引、表的内部数据字典信息。表结构文件则以.frm结尾,这与存储引擎无关。  以下为InnoDB的表空间结构图:

2016-08-19 15:25:07 1302

转载 MySQL体系结构

了解MySql必须牢牢记住其体系结构图,Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的  1 Connectors指的是不同语言中与SQL的交互 2 Management Serveices & Utilities: 系统管理和控制工具 3 Connection Pool: 连接池。管理缓冲用户连接,线程处理等需要缓存

2016-08-19 15:24:25 294

转载 MySQL配置

一、登录MySQL  要登录到MySQL只需要使用如下命令。mysql -h localhost -u root -plocalhost:IP地址;root:用户名;database:数据库名(可以省略,如果有,跟在-p后面);  如果你发现这样报mysql不是有效命令。那么有两种解决方法:  1、我的电脑-->属性-->高级-->环境变量-->系统变量

2016-08-19 15:23:48 445

转载 java自动装箱拆箱深入剖析

这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好的记忆,毅然决定还是用一篇博客来代替我的记忆: java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装成为装箱,解包装称为拆箱); 其实按照我自己的理解自动装箱就可以简单的理解为将基本数据类型封装为对象类型,来符合java的面向对象;例如用int来举例: 复制代码代码如下://

2016-08-19 15:22:37 355

转载 Java 自动装箱与拆箱(Autoboxing and unboxing)

什么是自动装箱拆箱基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。 一般我们要创建一个类的对象实例的时候,我们会这样: Class a = new Class(parameter); 当我们创建一个Integer对象时,却可以这样: Integer i = 100; (注意:不是 int i =

2016-08-19 15:21:51 420

转载 深入剖析Java中的装箱和拆箱

自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。  以下是本文的目录大纲:  一.什么是装箱?什么是拆箱?  二.装箱和拆箱是如何实现的  三.面试中相关的问题  若有不正之处,请谅解和批评指正,不胜感激。  请尊

2016-08-19 15:20:51 286

转载 MySQ临时表和内存表的联系和区别

内存表,就是放在内存中的表,数据放在内存中,表结构定义放在磁盘中,所使用内存的大小可通过My.cnf中的max_heap_table_size指定,如max_heap_table_size=1024M。临时表也是存放在内存中,临时表最大所需内存需要通过tmp_table_size=1024M设定。 当数据超过临时表的最大值设定时,自动转为磁盘表,此时因需要进行IO操作,性能会大大下

2016-08-14 17:49:07 721

转载 临时表要舍磁盘临时表取内存临时表

【IT168 技术】临时表是系统采取某些作业时所需要用到的一些临时数据。根据其存储的形态不同,可以分为磁盘临时表和内存临时表。在系统参数中,有MAX_HEAP_SIZE和TMP_TABLE_SIZE两个参数来控制临时表的大小。当临时数据超过这两个参数的规定时,系统就会将内存临时表转换为磁盘临时表。这也就是说,磁盘临时表是内存临时表的一个替代品。  一、磁盘临时表与内存临时表的差异

2016-08-14 17:44:00 1261

转载 Mysql临时表

当你创建临时表的时候,你可以使用temporary关键字。如:  create temporary table tmp_table(name varchar(10) not null,passwd char(6) not null)‘或     CREATE TEMPORARY TABLE IF NOT EXISTS sp_output_tmp ENGINE = MEMORYSELEC

2016-08-14 17:43:01 535

转载 学习MYSQL之ICP、MRR、BKA

Index Condition Pushdown(ICP)Index Condition Pushdown (ICP)是mysql使用索引从表中检索行数据的一种优化方式。ICP原理禁用ICP,存储引擎会通过遍历索引定位基表中的行,然后返回给MySQL Server层,再去为这些数据行进行WHERE后的条件的过滤。开启ICP,如果部分WHERE条件能使用索引中的字段,MySQL Se

2016-08-14 17:06:12 4365

转载 MySQL5.6之Index Condition Pushdown(ICP,索引条件下推)

ICP(index condition pushdown)是mysql利用索引(二级索引)元组和筛字段在索引中的where条件从表中提取数据记录的一种优化操作。ICP的思想是:存储引擎在访问索引的时候检查筛选字段在索引中的where条件(pushed index condition,推送的索引条件),如果索引元组中的数据不满足推送的索引条件,那么就过滤掉该条数据记录。ICP(优化器)尽可能的把

2016-08-14 17:05:11 514

转载 防止Class类反编译的方法,对Class进行加密

首先在介绍反编译器之前,要提及JDK自带的一个工具 [javap] ,它是一个Java代码反汇编器。 然后其次是有一个sourceforge中开源的一个反编译器 Jode(http://jode.sourceforge.net/download.html) 下载。反编译对安全构成的威胁是显而易见的,因此源码保护也就必不可少的。其实,反编译和代码保护是一场无停止斗争,双方都在争斗中得以发展。

2016-08-14 15:41:46 8074 1

转载 高性能MySql设计之查询优化(limit优化)

1        介绍1.1     处理流程当MYSQL 收到一条查询请求时,会首先通过关键字对SQL语句进行解析,生成一颗“解析树”,然后预处理器会校验“解析树”是否合法(主要校验数据列和表明是否存在,别名是否有歧义等),当“解析树”被认为合法后,查询优化器会对这颗“解析树”进行优化,并确定它认为最完美的执行计划。 1.2     衡量标准MYSQL查询

2016-08-14 15:37:38 6853 1

转载 MySQL优化—工欲善其事,必先利其器之EXPLAIN

最近慢慢接触MySQL,了解如何优化它也迫在眉睫了,话说工欲善其事,必先利其器。最近我就打算了解下几个优化MySQL中经常用到的工具。今天就简单介绍下EXPLAIN。内容导航idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra 环境准备MySQL版本:创建测试表CREA

2016-08-14 15:34:32 496

转载 MySQL优化—工欲善其事,必先利其器(2)

上一篇文章简单介绍了下EXPLAIN的用法,今天主要介绍以下几点内容:慢查询日志打开慢查询日志保存慢查询日志到表中慢查询日志分析Percona Toolkit介绍安装pt-query-digestpt-index-usagept-query-advisorSHOW PROFILEperformance_schema 慢查询日志

2016-08-14 15:32:50 895

转载 Mysql查询优化器

Mysql查询优化器本文的目的主要是通过告诉大家,查询优化器为我们做了那些工作,我们怎么做,才能使查询优化器对我们的sql进行优化,以及启示我们sql语句怎么写,才能更有效率。那么到底mysql到底能进行哪些优化那,下面通过以下几个方面来探讨一下:1          常量转化 它能够对sql语句中的常量进行转化,比如下面的表达式: WHERE col1 = col2

2016-08-14 15:31:18 1557

转载 复合索引和多个单列索引的效率比较

中文总结:multi column的索引与isolate的column索引,到底孰优孰劣?结论如下:对于具有2个用and连接条件的语句,且2个列之间的关联度较低的情况下,multi col index有一定优势。对于具有2个用and连接条件的语句,且2个列之间的关联度较高的情况下,multi col index有很大优势。对于具有2个用or连接条件的语句,isolate

2016-08-14 15:29:46 5958

转载 索引合并和组合索引的比较

在教务系统补考子系统的开发过程中,安排考场的算法运算时间非常慢,需要32秒才能完成考场的分配。查找原因,由于需要在学生补考科目表里面进行查找数据——该表的数据目前已达200万条,所以算法的大部分时间都花在查找数据方面。为了解决以上问题,我们决定对数据表进行分析,创建合适的索引。在创建索引过程中,我们发现查询语句已经为查询列创建了索引,但是是为每个列单独创建的——SELECT  *  FRO

2016-08-14 15:20:38 1853

转载 mysql使用存储过程返回多个值

可以使用OUT、INOUT参数类型让存储过程返回多个结果值,存储函数不能胜任,因为只能返回一个值。比如统计student数据表里男生和女生人数并通过它的参数返回这两个计数值,让调用者可以访问它们:[sql] view plain copydelimiter $$  create procedure count_students_by_sex(ou

2016-08-07 23:16:00 10270 2

转载 MySql存储过程之变量declare set

1、变量的定义在MySQL里面可以像我们写代码中一样定义变量来保持中间结果,看下面的格式:[sql] view plain copyDECLARE variable_name datatype(size) DEFAULT default_value;   DECLARE相当于关键字,有点类似var,表示定义一个变量;然

2016-08-07 23:14:34 9576 1

转载 MySQL的语句执行顺序

MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是只有最后一个虚拟的表才会被作为结果返回。如果没有在语句中指定某一个子句,那么将会跳过相应的步骤。下面我们来具体分析一下查询处理的每一个阶段FORM: 对FROM

2016-08-07 23:13:05 407 4

转载 sql解释执行顺序

在查询中逻辑查询和物理查询有着本质的区别,SQL不同于其它编程的最明显的特征就是处理代码的顺序,虽然总是最先写SELECT 但是几乎总在最后执行,那到底是怎么一个执行顺序呢 如下的sql查询语句执行顺序(1)from(3) join(2) on(4) where(5)group by(6) with (7)having(8)

2016-08-07 23:12:07 1257 4

转载 sql执行顺序

SQL 不同于与其他编程语言的最明显特征是处理代码的顺序。在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。      每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回 给调用者。如果没有在查询中

2016-08-07 23:09:47 373 3

转载 MySQL中distinct和group by性能比较[转]

之前看了网上的一些测试,感觉不是很准确,今天亲自测试了一番。得出了结论(仅在个人计算机上测试,可能不全面,仅供参考)测试过程:准备一张测试表 1 CREATE TABLE `test_test` (2 `id` int(11) NOT NULL auto_increment,3 `num` int(11) NOT NULL default '0

2016-08-07 22:38:14 2224 3

转载 DISTINCT和GROUP BY的区别

其实二者没有什么可比性,但是对于不包含聚集函数的GROUP BY操作来说,和DISTINCT操作是等价的。不过虽然二者的结果是一样的,但是二者的执行计划并不相同。在Oracle9i中:SQL> SELECT * FROM V$VERSION;BANNER-------------------------------------------------

2016-08-07 22:35:09 1184 5

转载 Mysql几种索引方式的区别及适用情况

Mysql目前主要有以下几种索引方式:FULLTEXT,HASH,BTREE,RTREE。那么,这几种索引有什么功能和性能上的不同呢?FULLTEXT即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。值得一

2016-08-07 22:28:27 4082 1

转载 MySQL 优化之 index merge(索引合并)

深入理解 index merge 是使用索引进行优化的重要基础之一。理解了 index merge 技术,我们才知道应该如何在表上建立索引。1. 为什么会有index merge我们的 where 中可能有多个条件(或者join)涉及到多个字段,它们之间进行 AND 或者 OR,那么此时就有可能会使用到 index merge 技术。index merge 技术如果简单的说,其实就

2016-08-07 22:24:07 3907 6

转载 mysql索引合并:一条sql可以使用多个索引

mysql的索引合并并不是什么新特性。早在mysql5.0版本就已经实现。之所以还写这篇博文,是因为好多人还一直保留着一条sql语句只能使用一个索引的错误观念。本文会通过一些示例来说明如何使用索引合并。什么是索引合并下面我们看下mysql文档中对索引合并的说明:The Index Merge method is used to retrieve rows with severa

2016-08-07 21:16:56 18706 6

转载 MySQL基本概念--索引&索引类型

索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:CREATE TABLE mytable(   ID INT NOT NULL,    username VARCHAR(16) NOT NULL  );   我们随机向里面插入了

2016-08-07 21:15:32 482 4

转载 mysql默认排序规则

今天遇到一个问题,有一个 Select 语句没有加 “Order By”,返回的数据是不确定的。这种问题碰到不止几次了。追根寻底, Select 语句如果不加 “Order By”, MySQL会怎么排序呢?* 不能依赖 MySQL 的默认排序* 如果你想排序,总是加上 Order By* GROUP BY 强加了 Order By (这与标准语法冲突,如果要避免,请使

2016-08-07 21:13:49 28509 6

转载 《高性能MySQL》读书笔记--索引

索引(在MySQL中也叫做键),是存储引擎用于快速找到记录的一种数据结构。写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上

2016-08-07 21:12:05 706 2

转载 SQL compute by 的使用

GROUP BY子句有个缺点,就是返回的结果集中只有合计数据,而没有原始的详细记录。如果想在SQL SERVER中完成这项工作,可以使用COMPUTE BY子句。COMPTE生成合计作为附加的汇总列出现在结果集的最后。当与BY一起使用时,COMPUTE 子句在结果集内生成控制中断和分类汇总。下列 SELECT 语句使用简单 COMPUTE 子句生成 titles 表中 price 及 ad

2016-08-07 05:30:59 1418

转载 MySQL分组查询Group By实现原理详解

由于GROUP BY 实际上也同样会进行排序操作,而且与ORDER BY 相比,GROUP BY 主要只是多了排序之后的分组操作。当然,如果在分组的时候还使用了其他的一些聚合函数,那么还需要一些聚合函数的计算。所以,在GROUP BY 的实现过程中,与 ORDER BY 一样也可以利用到索引。  在MySQL 中,GROUP BY 的实现同样有多种(三种)方式,其中有两种方式会利用现有的索

2016-08-07 05:03:09 16914

转载 myisam压缩(前缀压缩)索引

myisam使用前缀压缩来减少索引的大小,从而让更多的索引可以放入内存中,默认只压缩字符串,但通过参数配置也可以对整数做压缩,myisam压缩每个索引块的方法是,先完全保存索引块中的第一个值,然后将其他值和第一个值进行比较得到相同前缀的字节数(长度)和剩余的不同后缀部分(即把相同部分去掉),把这部分存储起来即可(相同前缀长度和不同后缀部分字符串)。如:索引块中的第一个值是perform,第二个是p

2016-08-07 04:08:02 1538

转载 使用mysql profiling功能剖析单条查询

5.1版本开始引入show profile剖析单条语句功能,支持show profiles和show profile语句,参数have_profiling;控制是否开启:查看是否支持这个功能(查询为yes表示支持):mysql > show variables like 'have_profiling';+----------------+-------+| Variable_na

2016-08-07 03:56:36 3864

转载 mysql btree与hash索引的适用场景和限制

btree索引:如果没有特别指明类型,多半说的就是btree索引,它使用btree数据结构来存储数据,大多数mysql引擎都支持这种索引,archive引擎是一个例外,5.1之前这个引擎不支持任何索引,5.1开始才支持单列自增的索引。innodb使用b+tree=btree(btree已经不使用了)存储引擎以不同的方式使用btree索引,性能也各不相同,各有优劣,如:myisam使用前缀压

2016-08-07 03:52:45 4649

转载 mysql聚集索引的优缺点

聚簇索引并不是一种单独的索引类型,而是一种数据存储方式(不是数据结构,而是存储结构),具体细节依赖于其实现方式,但innodb的聚簇索引实际上是在同一个结构中保存了btree索引和数据行。  当表有索引时,它的数据行实际上存放在索引的叶子页中,属于聚簇表示数据行和相邻的键值紧凑地存储在一起,因为无法同时把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。因为是存储引擎负责实现索引,因此

2016-08-07 03:35:36 4211

转载 EXISTS、IN与JOIN性能分析

EXISTS、IN与JOIN,都可以用来实现形如“查询A表中在(或不在)B表中的记录”的查询逻辑。在论坛上看到很多人对此有所误解(如关于in的疑惑、用 外连接 和 Is Null 代替 not in两帖),特做一简单测试。测试结果:测试代码较长,附于本帖最后。图表中百分数表示同一组3个查询的执行时间比例。红色表示3个语句中最慢,绿色表示3个语句中最快的,并列则没加颜色。

2016-08-03 00:19:25 13298 3

转载 sql优化--in和exists效率

in 和existsin是把外表和内表作hash 连接,而exists 是对外表作loop 循环,每次loop 循环再对内表进行查询。一直以来认为exists 比in 效率高的说法是不准确的。如果查询的两个表大小相当,那么用in 和exists 差别不大。 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:例如:表A

2016-08-02 23:57:31 15239 1

C++编程思想(中文)

C++编程思想(中文) 本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器类、多重继承、异常处理和运行时类型识别。 本书作为正式教材和自学用书均非常优秀,作为程序设计者的参考用书亦极为合适。

2009-11-11

vc文件拷贝程序(显示拷贝进度)

是一个在VC下实现文件拷贝的程序,包括浏览文件夹、拷贝进度显示功能,文家拷贝主要使用win32函数CopyFileEx,进度显示则通过其回调函数CopyProgressRoutine实现。

2009-05-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除