自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 MySQL数据类型

MySQL 数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的;MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型;整数类型Int(N)中N的涵义PS:定义了 init(5)zerofill 当和int(10)join时显示宽度对不上有可能出现临时表N表示显示宽度为N,但仍占4字节存储,存储范围不变;>create t

2016-04-20 16:49:35 362

原创 MySQL安装规范

系统安装规范A)硬件设置数据库服务器偶数盘组成raid 1+0,force wb策略(wb,write back 写cache  提交写入块给阵列卡的时候先写入cache层),数据库服务器最好双电,cache卡越大越好,可将所有cache都用于写缓存加速,关闭预读如果是ssd建议raid1(两块不同使用生命周期的盘,降低同时故障的概率)保证数据安全性(不同厂家也可以容量不一样也可以)

2016-04-19 14:53:03 609

原创 Innodb逻辑存储机制

Innodb的逻辑存储单元是由大到小分别是tablespace segment exetent page(block)组成表空间(tablespace)所有数据都存在表空间中,启用参数innodb_file_per_table,则每张表内的数据可以单独放到一个表空间中,每张表空间中存放的只是数据,索引和插入缓冲,其他类的数据,如undo信息,系统事务信息,二次写缓冲等还是存放在

2016-03-14 16:58:03 1335

原创 MVCC

Innodb多版本实现机制:为了实现多版本,INNODB必须在表空间中保存行的旧版本信息,这些信息被保存在回滚段中;在内部,innodb为每个行增加两个域,1个6byte的域来指示最后插入或更新这个行的事务标识符(db_trx_id/trx id),删除标志也被认为是一个更新,因为它在提交前只是在行上做了个标记,另外一个7-byte的域被称为回滚段指针(db_roll_ptr/roll p

2016-03-11 15:16:08 374

原创 innodb锁(三)

Innode引擎监控的开启的方法   锁监控:打开innodb的锁监控:CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB;    5.6.16可以使用:  --两个都需要打开set GLOBAL innodb_status_output=ON;set GLOBAL innodb_status_output_lock

2016-03-11 15:07:48 370

原创 INNODB加锁分析处理(二)

Recordlock:单个记录上的锁,至少锁定一行记录;Gap lock(间隙锁),在索引记录间隙上的锁,或者是第一条索引记录之前,最后一条索引记录之后上的间隙锁(两条记录中间的缝隙) 锁定两个记录中间的缝隙;Next-keylock(下一键锁),索引记录锁以及索引记录之间的间隙锁,二者的组合锁;记录锁至少锁定一条记录(普通,主键,唯一 索引)或是无任何索引innodb会对rowid加

2016-03-10 17:33:01 1952

原创 innodb锁(一)

INNODB的几种锁共享锁(S-LOCKING),允许一个事务去读一行,阻止其它事务获得相同数据集的排它锁排它锁(X-LOCKING),允许获得排它锁的事务更新数据,阻止其它事务取得相同数据集的共享读锁和排它锁INNODB还独有实现了2种锁意向共享锁(IS),事务打算给数据行加共享锁,事务在给一个数据行加共享锁前必须先取得该表的IS锁意向独占锁(IX),事务打算给数据行加排它锁

2016-03-08 14:57:21 436

原创 MySQL事务特性,隔离级别

事务特性ACIDAtomic,原子:同一个事务里,要么都提交,要么都回滚;Consistency,一致性:即在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏;Isolation,隔离:并发事务间的行数据是彼此隔离的;Durability,持久:事务提交后,所有结果务必被持久化。 MySQL支持事务的存储引擎:Innodb,NDBcluster,TokuDMyS

2016-03-08 09:28:49 1577

原创 MySQL索引设计原则

设计原则低选择性的列不加索引,如性别;常用的字段放在前面;选择性高的字段放在前面;需要经常排序的字段,可加到索引中,列顺序和最常用的排序一致;对较长的字段数据类型优先考虑前缀索引如index(url(64));只创建需要的索引,避免冗余索引,如index(a,b)index(a)。MySQl索引的限制只支持B+tree,hash索引不支持bitmap;不支持表达式,

2016-03-07 17:15:56 391

原创 提高索引的检索效率

创建测试表create table mytab(id int(10) unsigned not nullauto_increment,c1 int(11) not null default 0,c2 int(10) unsigned default null,c5 int(10) unsigned not null default 0,c3 timestamp not nu

2016-03-07 17:01:20 671

原创 key_len计算规则

1) 索引字段的附加信息,可以分为变长和定长数据类型讨论,当索引字段为定长数据类型,比如说char int datetime,需要有是否为空的标记,这个标记需要占用1个字节对于变长数据类型,比如说:varchar,除了是否为空的标记外,还需要有长度的信息需要占用两个字节(备注:当字段类型定义为非空的时候,是否为空的标记将不占用字节)2) 同时还需要考虑表所使用的字符集,不同的字符集,gbk编码

2016-03-07 16:58:36 2005

原创 MySQL索引的类型

逻辑上:Single columindexes单列索引Combinedindexes,multiple-columnindex 多列索引Unique唯一索引Nonunique非唯一索引 物理上:Clusteredindex 聚集索引Not-clusterindex 非聚集索引Innodb会把显示定义的索引 定义为聚集索引  聚集索引和数据列的行存储顺序是一样

2016-03-07 16:33:10 356

原创 索引的优缺点

索引优点1.       加快数据检索效率2.       可以创建唯一性约束索引,保证数据库表中每一行数据的唯一性3.       加速表和表连接效率4.       在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间索引缺点1.       索引需要占用更多物理存储空间2.       当表中的数据进行增加,删除和修改的时候,索引也要更新维护,降

2016-03-07 16:31:51 472

原创 哈希索引和B+树索引的区别

逻辑区别hash算法立刻定位 对应的hash筒的关键字 b+数可能会做3次IO 最大4次IO 最小的话直接内存取出结果hash:1.只能等值查询不能排序2.hash碰撞3.不支持范围排序4.hash筒大了维护成本更大大数据的情况下b+索引比hash索引更高效hash索引可以一次性定位到结果  只能精确查找  索引大的话维护成本更大memory支持

2016-03-07 16:26:54 1656

原创 B+树索引算法

B+树是B树的变体,也是一种多路搜索树1.非叶子节点的子树指针与关键字个数相同;2.为所有叶子节点增加一个链指针;3.所有关键字都在叶子节点出现;B+树插入新元素时,可能会遇到3种情况Leaf page fullIndex page full操作NONO直接将记录插入叶节点

2016-03-07 15:23:10 1672

原创 Binary tree,二叉树

Binary tree二叉树Binary tree二叉树的每个节点至多只有二叉子树,二叉树的子树有左右有序之分,次序不能颠倒左边图非二叉树通过排序完成后变成了二叉树平衡树平衡二叉树具有以下性质:它是一棵空树或其左右两个子树的高度差的绝对值不超过1,且左右两个子树也是平衡二叉树不平衡树会通过自旋,变成平衡树平衡树和二叉查找树最大的区别:前者是平衡的后者未必

2016-03-07 15:09:04 230

原创 Binary search二分查找法

二分查找法,也叫折半查找法(折半搜索,二分查找算法,二分搜索),是一种在有序数组中查找某一特定搜索的算法这种搜索算法每一次比较都使搜索范围缩小一半二分查找法的优点是比较次数少,查找速度快,平均性能好,其缺点是要求待查表有序表,且插入删除困难,因此,折半查找方法适用于不经常变动而查找频繁的有序表 257912

2016-03-07 13:59:50 334

原创 MySQL存储引擎对比

引擎名特点使用建议myisam早期版本引擎,推表,在MariaDB用Aria替代用尽量少使用myisam对CPU内存利用率不高,并发支持不好memory以内存为存储介质,请求速度高,但数据不安全适用于数据安全要求不高的环境中,如:临时记数等Innodb支持

2016-03-07 11:28:19 300

原创 max_heap_table_size 和 tmp_table_size

max_heap_table_size:负责设置memory/heap表最大容量,不管其他引擎sql产生的临时表,如果内存不够用不允许写入新的数据,memory/heap表也不会转成磁盘表,会发出告警不允许写入磁盘数据tmp_table_size:执行sql过程中产生的临时表如果执行sql产生临时表,超过tmp_table_size/max_heap_table_size会产生基于磁盘的myi

2016-03-07 11:24:45 3062

原创 net_buffer_length

每个客户端连接时。用于维持连接缓冲,初始分配预设值,在有需要时,则会自动扩大到max_allowed_packet大小,然后在回收预设的net_buffer_length大小最小1k最大1m默认16kMysqldump时每个extended insert行长度不能超过net-buffer-length的值

2016-03-07 11:22:04 5791

原创 bulk_insert_buffer_size

专用于myisam引擎,用一个特别的类似的树形结构体缓存,用于提高 insertselect insert…values(…)(….)以及load data写数据到非空表的情景

2016-03-07 11:21:30 8894

原创 Binlog_cache_size

在事务过程中容纳二进制日志SQL语句缓存大小,二进制日志缓存是服务器支持事务存储引擎并且服务器启用了二进制日志(log-bin选项)的前提下为每个客户端分配的内存如果系统中经常会出现多语句事务的话,可以尝试增加该值的大小,以获得更好的性能当然,我们可以通过MySQL的以下两个状态变量判断当前binlog_cache_size的状况:binlog_cache_use和binlog_cache

2016-03-07 11:17:11 890

原创 join_buffer_size

应用经常会出现一些两表(或多表)join的操作需求,MySQL在完成某些join需求的时候(all row join/all index /scan join)为了减少参与join的“被驱动表”的读取次数以提高性能,需要使用到join buffer来协助完成join操作当join buffer太小,MySQL不会将该buffer存入磁盘文件而是先将join buffer中的结果与需求joi

2016-03-07 10:58:22 10041

原创 read_buffer_size/read_rnd_buffer_size

read_buffer_size:(数据文件存储顺序)是MySQL读入缓冲区的大小,将对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区,read_buffer_size变量控制这一缓冲区的大小,如果对表的顺序扫描非常频繁,并你认为频繁扫描进行的太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能,read_buffer_size变量控制这一提高表的顺序扫描的效率

2016-03-07 10:53:48 8241

原创 table_definition_cache

从MySQL5.1开始,数据表文件描述符被分开为数据文件及数据表定义两部分,表定义文件缓存可以放在专属的table_definition_cache中表定义文件缓存相比表文件描述符缓存所消耗的内存更小,其默认值是400状态值:Open_table_definitions:表定义文件.frm被缓存的数量Opened_table_definitions:历史上总共被缓存过的,frm文件

2016-03-07 10:49:54 6129

原创 table_cache

.FRM文件只能同时打开一次(全局的锁).MYD,MYI文件则是每个线程都打开一次 table_cache缓存打开文件的描述符(打开数据文件更快一些)几个关于table_cache的状态值open_tables:当前打开表的数量opend_tables:历史上全部打开表的数量 如果opened_tables较大 table_open_cache的值可能需要加大

2016-03-07 10:45:56 264

原创 Query cache(高速查询缓冲池)

Mysql高速查询缓存池(简称QC)将select语句和查询结果放在缓冲区中,若有同样的select语句(区分大小写),将直接从缓冲区中读取结果;Show global status like“Qcache_%”查看QC可以知道QC设置时候合理;如果QCACHE_LOWMEM_PRUNES的值非常大,则表明经常出现缓冲不够的情况;如果QACHE_HITS的值非常大,则表明查

2016-03-07 10:42:49 315

原创 key_buffer_size

myisam索引缓冲,对myisam很重要,缓存myisam表索引数据(misam表的索引只需打开一次,多个线程间共享:而数据文件则是每个线程各自打开)myisam只缓存索引数据,不缓存行数据,行数据交给OS页面缓存(OS page cache)若主要使用myisam,推荐设置可用RAM的20%-50%,更多的留给OS,缓存从*.MYD读取的如果设置太大浪费内存空间,缓存太小缓存命中率

2016-03-07 10:32:23 2545

原创 INNODB内存结构

INNODB内存结构如下图1.  innodb_buffer_poolinnoDB高速缓冲对innodb很重要;innoDB不依赖OS,而自己缓存了所有数据,包括索引数据,行数据,等等,这点跟myisam有差别(myisam的数据依靠OS的pagecache进行缓存);应该把它设置大一些,建议设置为可用RAM的50%-80%;查询或更新需要对IBP加锁,影响并发;

2016-03-07 09:49:40 1246

原创 MySQL使用内存算法

MySQL使用总内存=global_buffer+thread_bufferthread buffer每个线程分配,会话级别的内存结构,分配高可能导致内存溢出导致OOMAll thread buffer(会话/线程级内存分配总和)=Max_threads(当前实际最大活跃连接数)*(read_buffer_size                              

2016-03-05 13:51:42 573

原创 MySQL体系结构

连接层:和客户端交互 对应主机的用户名密码 threadpoolSQL层:SQL解析 查询存储层: 内存数据的存储,数据的交互,NDB基于网络的集群

2016-03-05 12:09:12 223

原创 xtrabackup

xtrabackup的备份实现备份原理:利用innodb crash recovery恢复的步骤use-memory也可以使用到内存

2016-02-27 17:02:46 361

原创 Redis同步配置

Redis 同步配置Redis的主从和MySQL的主从从架构上看很相近,都是一个主库支持多个从库,主从复制不会阻塞master,在同步数据时,master可以继续处理client请求,从库可以扩展redis读的能力环境描述MasterSlaveIp:192.168.247.11 port:6379Ip:192.168.24

2016-02-27 13:05:30 501

原创 Redis安装

环境Redis 2.8.13OS CentOS release 6.5下载redis安装包http://www.redis.io/download http://download.redis.io/releases/redis-2.8.13.tar.gz  安装编译Redis#cd /opt/software/#wget http:/

2016-02-27 12:57:01 189

原创 redis体系结构

NoSQL具有如下特点:处理大规模数据运行在pc服务机群上轻松解决性能瓶颈适用于如下场景:对数据高并发处理对大数据高效率存储和访问对数据高可用及高扩展Redis是NoSQL数据库的一种Redis是以KV方式存储数据库特点:非关系,分布,开源,可扩展,高速内存操作。适合运行在廉价的pc服务器上分布式处理海量数据Redis是一个开

2016-02-27 12:41:03 1879

原创 同步参数介绍

复制中的一些重要的参数 Log-binServer-idLog-bin-indexbinlog_formatbinlog_cache_sizemax_binlog_sizesync_binlogexpire_logs_dayslog_bin_trust_function_creators                                | 

2016-02-19 15:57:11 684

原创 GTID

GTIDglobal transaction identifiers(全局事务标志);一个事务对应一个唯一ID,一个GTID在一个服务器上只会执行一次(一个事务在从库上只能出现一次);GTID是用来替代以前classic的复制方法;MySQL5.6.2支持 MySQL5.6.10后完善;GTID组成Server_uuid:GTID实际上是由UUID+TID组成的。其中U

2016-02-19 14:09:05 2271

原创 简单的主从配置

复制配置基本环境介绍MySQL版本:MySQL 5.6.27角色Ip:portServer-id必备条件Master192.168.247.11113308启用log-bin主库上创建复制用户Slave192.168.247.121

2016-02-15 17:09:48 242

原创 复制介绍

复制介绍MySQL复制在业界里有叫:MySQL同步,AB复制等,专业的名称就是叫:复制;复制是单向的,只能从Master复制到slave上;Slave上对于Master包含的数据不能进行写操作;一组复制结构中可以有多个slave,对于Master一般场景推荐只有一个;Master用户写入数据,生成event记到binary log中;Slave接收Master传来的binl

2016-02-15 14:17:06 229

原创 MySQL用户权限管理

核心开发权限权限列可以针对的级别DELETEDELETE_PRIVTABLESINSERTINSERT_PRIVTABLES OR COLUMNSSELECTSEELCT_PRIVTABLES OR COLUMNS

2016-02-14 15:37:52 248

空空如也

空空如也

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

TA关注的人

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