MySQL在创建索引之前一定要想到的事情
MySQL在5.5.3版本引入了metadata lock他的本意是解决之前版本事务隔离特性的几个bug,但是引入的问题也不小.先说说MySQL的事务吧.Oracle的事务指的是需要分配回滚段的SQL语句,也就是说select并不是oracle事务的一部分.比如运行一个查询,然后在另外一个会话查询v$transaction,并不会有任何相关的信息.直到事务中出现inse...
行转列计算差值的一种优化
http://blog.itpub.net/29254281/viewspace-1379159/前文在计算差值的时候使用的是union all先通过左连接计算两天签到人数的差值,然后union all当天签到的用户,最后行换列但是这种方式的效率很低,需要扫描两次表.(前文的数据和本文不一致,下面是本文使用的数据)受到where in list的启发,使用如下方式,可以仅扫描一...
MYSQL 锁:metadata lock
转载:http://www.sqlparty.com/mysql-metadata-lock%E6%B7%B1%E5%85%A5/metadata lock的超时时间是lock_wait_timeout,并不是innodb_lock_wait_timeoutMySQL 5.5.3版本中引入了Metadata lock: DDL语句打破了事务的隔离级别 在5.5.3版本之前,MySQL事务对于表结构元数据(Metadata)的锁定是语...
行转列的应用
快到圣诞节了,需求弄出了一堆活动其中一个活动要求用户每天签到,连续若干天,有不同级别的奖励.签到表模拟如下,userid记录用户的ID,createtime模拟用户签到的时间.其中nums是数字辅助表,用法参见http://blog.itpub.net/29254281/viewspace-1362897/create table award_chance_history(&...
SQL Where in list 问题
ITPUB技术丛书 剑破冰山 170页Where in list问题还是挺常见的。前台可能传过来一系列参数,JAVA可能将其拼接在In列表里面.比较典型的场景是前台页面有一堆复选框,系统需要显示用户勾选的数据这时,后台很可能将其拼接为一个包含in列表的SQL不过,这种做法有两个缺陷1.Oracle In列表的数目有限制(1000)2.不能复用执行计...
MySQL年龄日期问题
前几天接到一个需求,要根据用户的出生日期算出他的年龄.模拟数据如下,使用了数字辅助表创建数据.http://blog.itpub.net/29254281/viewspace-1362897/drop table if exists t;create table t( id int primary key auto_increment, birthday datetime );trun...
MySQL数字辅助表
最近在做一个活动签到的功能,每个用户每天签到,累计到一定次数,可以换一些奖品。签到表的设计如下CREATE TABLE `award_chance_history` ( `id` int(11) NOT NULL AUTO_INCREMENT, `awardActId` int(11) DEFAULT NULL COMMENT '活动id', `vvi...
网页主动探测工具(修改Bug)
http://blog.itpub.net/29254281/viewspace-1344706/程序的结构虽然定了,但是程序本身还有一些bug首先ParseHandler的解析有些问题,原来的程序是这样的路径中有冒号的被过滤掉了,这样会把绝对路径也过滤掉.其实最开始的本意是过滤如下的地址"mvboxmtv:url=http://d.mvbox.cn/util/getPlayer.htm?appId=9306"针对这个...
MySQL删除重复数据
drop table if exists test ;create table test( id int primary key auto_increment, name varchar(10) );insert into test(name) values('1');insert into test(name) values('2');insert into test(name) values('3');insert into test(name) values('4');insert into test(name) value...
java的classpath通配符
先编译本目录下所有java文件,然后使用通配符增加一个指定目录的所有jar文件作为classpathalias java='javac -d . *.java;java -Xms512m -Xmx1024m -XX:MaxPermSize=64m -XX:PermSize=128M -cp .:/home/lihuilin/lib/*'这样写程序就有点脚本语言的感觉了
网页主动探测工具
单位的项目是IBatis做的,每个查询的SQL里面都有很多判断上次优化SQL之后,其中的一个分支报错,但是作为dba,不可能排查每一个分支.所以,干脆用爬虫爬过所有的网页,主动探测程序的异常.这样有两个好处1.可以主动查看网页是否异常 (500错误,404错误)2.可以筛查速度较慢的网页,从这个方向也可以定位慢SQL吧.(也有服务器...
JDBC内存管理—varchar2(4000)的影响
今天在项目评审中遇到到一个问题,一个表的字段如comment,开发想用varchar2(4000),而我建议在满足应用场景的情况下,尽量减少长度,当时就抛出了一个问题,varchar2(4000)和varchar2(40)那个好,当时我也只是简单的回答了一下,说道varchar2(xx)的字段会在内存中分配空间大小为字段...
搭建Active Data Guard环境
Oracle 11G之前的Data Guard恢复模式不能查询,只读模式不能恢复.在11G之后,增加了Active Data Guard的新特性.它可以兼顾查询和恢复.实验将一个最大性能模式的物理StandBy转换成最大可用性的Active Data Guard关于搭建物理StandBy请参考http://blog.itpub.net/29254281/viewspace-1315088/1.将备库设置为只读模式(可...
DataGuard模拟FailOver实验
DataGuard FailOver模拟主库实例已经崩溃,但是数据库文件可用,比如数据库文件存放在磁盘阵列上..1.在一个物理StandBy最大性能的环境下,中断备库的监听器2.主库切换联机重做日志(模拟主库的日志不能传送到备库的场景)SQL> alter system archive log current;System altered.SQL> /System altered.SQL> /System alte...
DataGuard SwitchOver
http://blog.itpub.net/29254281/viewspace-1315088/在物理StandBy的基础上进行SwitchOver主库:192.168.1.1备库:192.168.1.2首先,修改主库的参数alter system set log_archive_dest_2='service=standby valid_for=(all_logfiles,all_roles) db_unique_name=orcl' scope=both;修改备库的参数alter system set ...
DataGuard三种保护模式
DataGuard有三种保护模式1.最大保护模式2.最大可用性模式3.最大性能模式三种模式的配置如下DataGuard日志传输方式如下ARCH 归档LGWR async redolog先写入本地日志文件 LNSn进程读取redo,传输到StandBy服务器 sync redolog分别...
DataGuard搭建逻辑StandBy
物理StandBy优点是效率高,缺点是只读模式不能恢复,恢复模式不能查询.逻辑StandBy可以打开数据库,同时进行恢复.搭建逻辑StandBy首先需要一个物理StandBy的环境.http://blog.itpub.net/29254281/viewspace-1315088/1.在备库终止恢复模式ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 2.修改主库...
AWR Execute to Parse参数解析
最近优化单位的Oracle数据库,AWR部分内容如下可以看到Execute to Parse %和Execute to Parse % 指标很低.其中Execute to Parse %表示SQL语句解析后被重复执行命中率 计算公式=100*(1-Parses/Executions)如果该值偏小,说明分析(硬分析与软分析 )的比例较大,快速分析较少, 根据实际情况,可以考虑调整session_ca...
DataGuard搭建物理StandBy
实验使用DataGuard搭建一套物理StandBy环境主库Primary:192.168.1.1备库StandBy:192.168.1.2主要步骤1.主库设置归档模式,并且设置强制日志SQL> select log_mode from v$database;LOG_MODE------------ARCHIVELOGSQL> alter database force logging;Database altered.2.主库,备库设置tns和监听器主库和...
手动删除oracle数据库
http://blog.csdn.net/leshami/article/details/6454479在很多情况下,或无法使用dbca工具的时候,我们需要手动来删除数据库。对此,可以借助drop database命令来实现,下面的描述中给出手动删除数据库的具体步骤,包含文件系统数据库以及ASM数据库。环境:Oracle Enterprise Linux 5.4 + O...