mysql处理递归的一个例子
只是一个例子,简单记录一下!delimiter //drop procedure if exists getChildModel //CREATE PROCEDURE getChildModel(IN startId INT,in inAdmin int)BEGINDECLARE _id varchar(4) DEFAULT '0';DECLARE _path VARCHAR(2000);DECLARE _Last bigint DEFAULT 0;CREATE TEMPORARY TABLE IF NOT EXISTS temp_table ( id varchar(4) NOT NULL , path varchar(2000) default NULL, PRIMARY KEY (id)) ENGINE=InnoDB TYPE = HEAP;CREATE TABLE IF NOT EXISTS pp_table ( topid int not null, id varchar(4) NOT NULL , path varchar(2000
show engine innodb status 详解
这个比较详细!不错[@more@] 很多人让我来阐述一下 SHOW INNODB STATUS 的输出信息, 了解 SHOW INNODB STATUS 都输出了些什么信息,并且我们能从这些信息中获取什么资讯,得以提高 MySQL 性能。 首先,让我们来了解一下 SHOW INNODB STATUS 输出的基础,它打印了很多关于 InnoDB 内部性能相关的计数器、统计、事务处理信息等。在 MySQL 5 中,InnoDB 的性能统计结果也在 SHOW STATUS 结果中显示了。大部分和 SHOW INNODB STATUS 的其他信息相同,在旧版本中还没有这个功能。 SHOW INNODB STATUS 中的很多统计值都是
mysql性能监控指标
ref: http://hi.baidu.com/jiaofu1127/blog/item/4ada5790f8b608146f068cb8.htm[@more@]1.系统mysql的进程数 ps -ef | grep "mysql" | grep -v "grep" | wc –l 2.Slave_running mysql > show status like 'Slave_running'; 如果系统有一个从复制服务器,这个值指明了从服务器的健康度 3.Threads_connected mysql > show status like 'Threads_connected'; 当前客户端已连接的数量。这个值会少于预设的值,但你也能监视到这个值较大,这可保证客户端是处在活跃状态。 4.Threads_running mysql > show status
mysql里alter table 重定义主键的步骤:
Processing CREATE INDEXConsider an example. If you use the ALTER TABLE command to redefine the primary key of table T (or otherwise cause the clustered index to be recreated, for example by compressing an uncompressed table), the InnoDB Plugin will perform the following sequence of steps: Lock table T in exclusive mode. Create a new temporary table T1, with the new index structure. Copy data from table T to temporary table T1. Rename the original table T to temporary table T2. Re
Mysql innodb存储引擎的性能优化
ref:http://7567567.blog.51cto.com/706378/586925Mysql innodb存储引擎的性能优化这个说得挺全,挺不错![@more@]一切都从应用程序设计开始 1. 通用应用程序的设计是至关重要的 1.1. 设计你的schema,索引和查询,以及选择正确的存储引擎是常用的优化手段。 1.2. 在有些情况下存储引擎的选择会影响到schema和索引 1.3. 我们这里不会覆盖到一般的schema设计方法,但是会主要聚焦到Innodb存储引擎。 2. 每个存储引擎都是不同的 2.1. MySQl提供多种存储引擎可供选择 2.2. 它们每个都有不同的设计和操作属性。 2.3. 一个给某个存储引
innodb_flush_log_at_trx_commit和sync_binlog innodb_flush_method
innodb_flush_log_at_trx_commit和sync_binlog innodb_flush_method的介绍[@more@] innodb_flush_log_at_trx_commit:控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点 innodb_flush_log_at_trx_commit=0 日志缓冲区(存放redo log)以每秒一次的频率flush写入日志文件,并对文件描述符执行磁盘刷新操作,但不会在事务执行期间进行任何处理 innodb_flush_log_at_trx_commit=1 在每次执行事务时都将redo log buffer写入日志文件,并对文件描述符执行磁盘刷新操作 innodb_flush_log_at_trx_commit
MySQL数据库优化实践--硬件方面
这个介绍了mysql的一下关于硬件方面的一些优化,很不错![@more@]最近一段时间,我们整理了一些关于Percona,Linux,Flashcache,硬件设备的优化经验,分享给大家: 硬件 1.开启BBWC RAID卡都有写cache(Battery Backed Write Cache),写cache对IO性能的提升非常明显,因为掉电会丢失数据,所以必须由电池提供支持。电池会定期充放电,一般为90天左右,当发现电量低 于某个阀值时,会将写cache策略从writeback置为writethrough,相当于写cache会失效,这时如果系统有大量的IO操作,可能 会明显感觉到IO响应速度变慢。目前,新的RAID
Scale-up(纵向扩展)和Scale-out(横向扩展)
Scale-up(纵向扩展)和Scale-out(横向扩展)的解释[@more@] 谈到系统的可伸缩性,Scale-up(纵向扩展)和Scale-out(横向扩展)是两个常见的术语,对于初学者来说,很容易搞迷糊这两个概念,这里总结了一些把概念解释的比较清楚的内容。 首先来段Wikipedia的,讲的很透彻了。 Scale vertically (scale up) To scale vertically (or scale up) means to add resources to a single node in a system, typically involving the addition of CPUs or memory to a single computer. Such vertical scaling of exi
innodb_flush_method和innodb_flush_log_at_trx_commit
innodb_flush_log_at_trx_commit: 主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0、1、2三个。0,表示当事务提交时,不做日志写入操作,而是每秒钟将log buffer中的数据写入日志文件并flush磁盘一次;1,则在每秒钟或是每次事物的提交都会引起日志文件写入、flush磁盘的操作,确保了事务的 ACID;设置为2,每次事务提交引起写入日志文件的动作,但每秒钟完成一次flush磁盘操作。显然,设置为0或2可以减小系统的io压力,特别是0 时,速度最快,提高mysql写操作的吞吐量,但mysql或操作系
mysql : repair with keycache 的一个处理
今天一个朋友让我帮他处理以下1张3.78亿数据的表,需要导出2010年的数据到另外1张表,我查了下2010年的数据就有1.8,然后我修改了一下my.cnf的部分参数:[@more@]myisam_sort_buffer_size = 1024Mtmp_table_size = 256Mtmpdir = /back1/dzy_bakmyisam_max_sort_file_size=20G注意:/back1/dzy_bak这个目录需要chown mysql:mysql /back1/dzy_bak
oracle和mysql的行列转换
CREATE TABLE t( class1 VARCHAR2(2 BYTE), calldate DATE, callcount INTEGER ); INSERT INTO t(class1, calldate, callcount) VALUES ('1', TO_DATE ('08/08/2005', 'MM/DD/YYYY'), 40); INSERT INTO t(class1, calldate, callcount) VALUES ('1', TO_DATE ('08/07/2005', 'MM/DD/YYYY'), 6); INSERT INTO t(class1, calldate, callcount) VALUES ('2', TO_DATE ('08/08/2005', 'MM/DD/YYYY'), 77); INSERT INTO t(class1, calldate, callcount) VALUES ('3', TO_DATE ('08/09/2005', 'MM/DD/YYYY'), 3
mysql的自增id的一个问题
对于auto_increment的字段,比如:CREATE TABLE `aa` ( `a` int(11) NOT NULL auto_increment, `b` int(11) NOT NULL, PRIMARY KEY (`a`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;insert into aa values(1000,1);CREATE TABLE `aa` ( `a` int(11) NOT NULL auto_increment, `b` int(11) NOT NULL, PRIMARY KEY (`a`)) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8;update aa set id=id+100;CREATE TABLE `aa` ( `a` int(11) NOT NULL auto_increment, `b` int(11) NOT NULL, PRIMARY KEY (`a`)) ENGINE=Inno
mysql删除用户再新建该用户,仍然具有原来的权限的解决办法
所以如果需要减小权限,需要删除原来的用户然后再从新建立一个新用户!还有,重新建立用户后 (grant select,update on *.* to 'aa'@'%' identified by 'aa';),发现还是能delete 和 insert数据这是因为除了在user表控制权限外,db表也控制对数据库的权限,需要把这里边的相应数据删除后flush privileges后就可以了![@more@]用户问题:发现先按下列语句建立用户:mysql> grant all privileges on *.* to 'aa'@'%' identified by 'aa';Query OK, 0 rows affected (0.00 sec)mysql> select * from mysql.user where user = 'aa' G**
mysql hint忧化一例
背景:对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法。同样,在mysql里,也有类似的hint功能。mysql的优化器功能很弱,很多时候通过mysql hint强制制定表的连接顺序,或者是否使用索引,能够得到更快的性能。Alb中的一个sql,优化前15s,优化后0.38s。 实例: 碰到一个sql,需要执行15s。 SELECT t.oldcontractno, t.startdate, t.enddate, sum( confrec.confamt ) FROM ( SELECT ca1.contractno, f1.startdate, f1.enddate, ca1.oldcontractno FROM contra
perl的安装
perl -MCPAN -e 'install Time::HiRes'perl -MCPAN -e 'install File::Temp'perl -MCPAN -e 'install Data::Dumper'perl -MCPAN -e 'install DBI'perl -MCPAN -e 'install Getopt::Long'perl -MCPAN -e 'install Storable'Perl work tips and how to install perl on various platform 收藏 document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData("text"); if (text
group_concat
select concat_ws('|',eid,deptid,permission_dept)from (select eid,deptid,group_concat(permission_dept) as permission_deptfrom (select eid,deptid,concat(permission_dept) as permission_deptfrom (select eid,deptid,case substring(permission_dept,length(permission_dept),1) when ',' then substring(permission_dept,1,length(permission_dept)-1) else permission_dept end as permission_deptfrom pcore_dept_permission_09 where eid = 138619) a ) agroup by eid,deptid) a之前需要设置SET global group_concat_max_len
mysql的一个备份脚本
#/bin/sh#backup database everyday!yday=`date -d yesterday +%Y%m%d`mydump="/usr/local/service/mysql-3306/bin/mysqldump "myuser="mydbbak"mypass="enbak"dirname="/root/myadmin"hip=`ifconfig eth0 | grep "inet addr" | cut -d: -f2 | cut -d" " -f1`hports=`netstat -lpn|grep mysqld|grep '^tcp'|awk '{print $4}'|awk -F":" '{print $2}'`for tport in $hportsdotdirname="${dirname}/${yday}"mkdir -p $tdirnamebfilename="${tdirname
mysqld --verbose
mysqld接受许多命令行选项。执行mysqld --help可以简单列出来。要想看全部列表列,使用命令mysqld --verbose --help[@more@]
swappiness的设置
mysql需要关闭swappiness,避免发生swappy写在前面的话:我最近把我只有512M的老爷机加了一跟512M的的内存。但是我发现,当机器运行一段时间后越来越慢,一看系统监视器发现swap里面居然驻留了200M的数据,我想:好你个乌斑兔儿,居然好好的物理内存你不吃,来吃swap!所以,自己就准备对它进行点点“教育”。在ubuntu 里面,swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到sw
mysql优化文章(推荐)
ref:http://www.javaeye.com/topic/144033作者:andyao原文link: http://andyao.javaeye.com/admin/show/144033转载请留名1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响。MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,仅仅是一个玩具数据库。因此在产品中使用MySQL数据库必须进行必要的优化。优化是一个复杂的任务,本文描述MySQL相关的数据库设计和查询优化,服务器端优化,存储引擎优化。2. 数据库设计和查询优化 在MySQL Serv