Welcome 微信登录

首页 / 数据库 / MySQL

MySQL分库分表环境下全局ID生成方案

MySQL分库分表环境下全局ID生成方案

摘要: 介绍来自flicker和twitter的两种解决分布式环境下全局ID生成方案。目录:1. 数据库自增ID——来自Flicker的解决方案2. 独立的应用程序——来自Twitter的解决方案在大型互联网应用中,随着用户数的增加,为了提高应用的性能,我们经常需要对数据库进行分库分表操作。在单表时代,我们可以完全依赖于数据库的自增ID来唯一标识一个用户或数据对象。但是当我们对数据库进行了分库分表后,就不能依...
MySQL使用与优化总结

MySQL使用与优化总结

摘要: 这篇文章总结了工作中用到MySQL的一些常见问题,解决方案;合适的使用场景和优化方案。目录:存储引擎的选择:MyISAM vs InnoDB使用与优化DB的优化SQL的优化应用的优化简单故障排查技巧慢查询排查Lock情况排查Slave延时排查监控内置命令外部监控简单说说mysql高可用最后存储引擎的选择:MyISAM vs InnoDBMyISAM:支持全文索引;使用表级锁;读并发性能好。InnoDB:支持事务和外键;使用行级锁;写并发性能较好。在...
pt-query-digest解析MySQL Binlog日志文件

pt-query-digest解析MySQL Binlog日志文件

解析binlog工具百家争鸣,最常用的是mysqlbinlog,各有千秋,对于DBA,唯手熟尔罢了然而,有工具的地方就有江湖,故本文无意争论工具属优属劣,免得引起不成熟的争端仅介绍pt-query-digest其实也是能用来解析Binlog,友好、可读性强、便于快速诊断故障如果直接:[root@ld88 mysqldata]# pt-query-digest --type binlog mysql-bin88.000189将无法解析,需先做如下转换[roo...
filter造成的性能问题

filter造成的性能问题

filter这个词总让人很费解,它下一级可以挂 一个子节点,二个子节点,三个子节点...。挂一个子节点意思过滤,如对全表进行扫描后,按照条件过滤,丢弃不满足条件的数据。挂二个子节点类似是nest loop。挂三个子节点类似1和2做nest loop,结果集再与3做nest loop(这个是我推测的)。SQL> set linesize 300SQL> set timing onSQL> set autotrace traceonlySQL...
探索执行计划中filter的原理

探索执行计划中filter的原理

之前写过一篇文章,filter造成的性能问题,开头是这么写的:filter这个词总让人很费解,它下一级可以挂 一个子节点,二个子节点,三个子节点...。挂一个子节点意思过滤,如对全表进行扫描后,按照条件过滤,丢弃不满足条件的数据。挂二个子节点类似是nest loop。挂三个子节点类似1和2做nest loop,结果集再与3做nest loop(这个是我推测的)。为了证明当时的观点,我们下面来做个试验:filter下挂一个节点:挂一个节点时,下面的例子可以看...
排序合并连接(sort merge join)的原理

排序合并连接(sort merge join)的原理

这三类表连接方式是Oracle最基本的连接方式:嵌套循环连接(nested loops join)原理 哈希连接(hash join) 原理 排序合并连接(sort merge join)访问次数:两张表都只会访问0次或1次。驱动表是否有顺序:无。是否要排序:是。应用场景:当结果集已经排过序。排序合并连接原理:如果A表的数据为(2,1,4,5,2),B表的数据为(2,2,1,3,1) ,首先将A表和B表全扫描后排序,如下:A B1 12 12 24 25 ...
嵌套循环连接(nested loops join)原理

嵌套循环连接(nested loops join)原理

这三类表连接方式是Oracle最基本的连接方式:哈希连接(hash join) 原理 排序合并连接(sort merge join)的原理 嵌套循环连接(nested loops join)访问次数:驱动表返回几条,被驱动表访问多少次。驱动表是否有顺序:有。是否要排序:否。应用场景: 1.关联中有一个表比较小;2.被关联表的关联字段上有索引;3.索引的键值不应该重复率很高。如果你做过开发,就把它看成两层嵌套的for循环。下面我们来做个实验:SQL> ...
哈希连接(hash join) 原理

哈希连接(hash join) 原理

这三类表连接方式是Oracle最基本的连接方式:嵌套循环连接(nested loops join)原理 排序合并连接(sort merge join)的原理 哈希连接(hashjoin)访问次数:驱动表和被驱动表都只会访问0次或1次。驱动表是否有顺序:有。是否要排序:否。应用场景: 1. 一个大表,一个小表的关联;2. 表上没有索引;3. 返回结果集比较大。原理我们说的简单一点,先把驱动表的关联字段hash到PGA中(当然rowid也在PGA中),然后扫描...
Oracle Update执行计划原理解析与优化

Oracle Update执行计划原理解析与优化

当使用update,大多数情况下只有一个子节点,只有当set子句中使用子查询时,它才能有两个以上的节点,如果它只有一个节点的情况下,类似于过滤操作(探索执行计划中filter的原理),如下试验所示,步骤2首先扫描一次,当步骤2每返回一条数据步骤3、4、5都扫描一次,所以步骤3、4、5扫描了999次。当update下面有多个节点时,大家可以看到相当于是多个nestedloop(嵌套循环连接(nested loops join)原理),如果你操作的数据量大,则...
各种TNS报错总结--监听器及tnsnames.ora配置文件各种出错总结

各种TNS报错总结--监听器及tnsnames.ora配置文件各种出错总结

本地命名的配置:.本地名可以用简单的名称访问到所需的数据库或服务器所需的信息,而这些信息保存到了tnsnames.ora中.LOCALNAME: 本地名称ADDRESS: 服务器地址PROTOCOL: 使用协议HOST: IP地址PORT: 监听端口SERVICE_NAME: 数据库服务名称首先要保证tnsnames.ora文件中的格式正确,如=号、空格、括号之类基本格式不出错这个可以参考我的一篇tnsnames.ora各种模板:http://blog.c...
归档模式下,使用RMAN的同一备份两次用于不完全恢复

归档模式下,使用RMAN的同一备份两次用于不完全恢复

实验理论基础:SCN的序列的递增性不随数据库的任何操作而改变,即使是RESETLOGS也如此。RESETLOGS清除所有联机日志文件中未应用的重做记录,RESETLOGS只重置日志文件的序列号为1,但对SCN无影响,SCN仍按原序列递增。在控制文件中保存resetlogs SCN和计数器,以便唯一地标识用RESETLOGS选项执行的每一次打开数据库的操作。这个值被写进每个数据文件头以及重做日志文件。如果重做日志文件的日志序列号与Oracle的要求值不相符,...
<< 711 712 713 714 715 716 717 718 719 720 >>