Subscribe: 振华博客
http://zhenhua.org/feed.asp?cat=12
Added By: Feedage Forager Feedage Grade B rated
Language: English
Tags:
char  convert  create  khid  mysql  select 旧表  select  show  slave  sqlyog enterprise  xmgl  xmlxdm khid  xmlxdm  新表 select  旧表 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: 振华博客

ZhenHua 's blog



zenhua zhenhua 振华博客,振华's blog



Published: Wed, 21 Feb 2018 06:08:41 +0800

Copyright: Copyright 2018, ZhenHua 's blog
 



show status中文详解

Mon, 12 Jul 2010 11:01:04 +0800

状态名

作用域

详细解释

Aborted_clients

Global

由于客户端没有正确关闭连接导致客户端终止而中断的连接数

Aborted_connects




MySQL语句优化的原则

Fri, 06 Nov 2009 13:06:08 +0800

1、使用索引来更快地遍历表。

  缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。

  合理的索引设计要建立在对各种查询的分析和预测上。一般来说:
  a.有大量重复值、且经常有范围查询( > ,< ,> =,< =)和order by、group by发生的列,可考虑建立群集索引;
  b.经常同时存取多列,且每列都含有重复值可考虑建立组合索引;
  c.组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列。索引虽有助于提高性能但不是索引
  越多越好,恰好相反过多的索引会导致系统低效。用户在表中每加进一个索引,维护索引集合就要做相应的更新工作。

2、在海量查询时尽量少用格式转换。

3、ORDER BY和GROPU BY使用ORDER BY和GROUP BY短语,任何一种索引都有助于SELECT的性能提高。

4、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。

5、IN、OR子句常会使用工作表,使索引失效。如果不产生大量重复值,可以考虑把子句拆开。拆开的子句中应该包含索引。



mysql数据库分区

Fri, 30 Oct 2009 23:59:21 +0800

http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html


可以通过使用SHOW VARIABLES命令来确定MySQL是否支持分区,例如:

mysql> SHOW VARIABLES LIKE '%partition%';

下面的例子给出了怎样创建一个通过HASH分成6个分区、使用InnoDB存储引擎的表:

CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)

ENGINE=INNODB

PARTITION BY HASH(MONTH(tr_date))

PARTITIONS 6;

如果现在执行一个SHOW CREATE TABLE命令,可以观察到表的分区结构是如何被改变的:

mysql> SHOW CREATE TABLE part_tab\G;

----------------------------按照RANGE分区的表
是通过如下一种方式进行分区的,每个分区包含那些分区表达式的值位于一个给定的连续区间内的行。这些区间要连续且不能相互重叠,使用VALUES LESS THAN操作符来进行定义



MYSQL的master/slave数据同步配置

Wed, 21 Oct 2009 12:40:26 +0800

有三个地址必须调试成功,
1 从库连接主库进行测试: mysql -h192.168.200.80 -urepluser -ptestpassword 此处必须连接成功
2 show master status;必须有相关显示
3 show slave status;
必须为
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

sudo vim /etc/mysql/my.cnf mysql 配置文件
sudo /etc/init.d/mysql restart 重启 mysql

数据库服务器 Master, 主机名 :DB01, IP: 192.168.1.80

数据库服务器 Slave, 主机名 :DB02, IP: 192.168.1.103

先配置 Master 的 mysql 环境 .

修改 mysql 的配置文件 my.cnf 确保有下面的信息 , 没有加上 . 有的话修改成下面这样 . 其他的可以保持默认配置 .

[mysqld]
log-bin = mysql-bin



Excel导入MySql

Sat, 14 Mar 2009 02:40:44 +0800

另存 txt
mysql> load data local infile 'd:\1.txt' into table t_user_info fields terminated by '\t';



sqlyog 8 Enterprise Full

Thu, 12 Feb 2009 11:13:29 +0800

Sqlyog 8.01 Enterprise Full

刚更新到8.01,除了界面更漂亮和人性化以外还有两个比较令人激动的功能,一是增加了SQL Formatter 即SQL语句格式化功能,很实用,这一点终于跟上老大PL/SQL的脚步,见下图:



具体试验了一下,发现有些复杂些的SQL还是无法格式化,班加罗尔的工程师们还要改进了。

再就是Query Profiler性能分析,mysql5.0.37以上的版本支持,有了这个功能可以知道每条sql语句的性能,以及每条查询效率耗费在什么地方,这也是质的飞跃。详见mysql官方的介绍:http://dev.mysql.com/tech-resources/articles/using-new-query-profiler.html。
测试了一下,发现5.1.25的也不支持:



放个别人的图:




mysql concat乱码问题解决

Fri, 31 Oct 2008 15:19:47 +0800

concat(str1,str2)
当concat结果集出现乱码时,大都是由于连接的字段类型不同导致,如concat中的字段参数一个是varchar类型,一个是int类型或doule类型,就会出现乱码。

解决方法:
利用mysql的字符串转换函数CONVERT将参数格式化为char类型就可以了。

举例:
concat('数量:',CONVERT(int1,char),CONVERT(int2,char),'金额:',CONVERT(double1,char),CONVERT(double2,char))



mysql 复制表/字段

Thu, 02 Oct 2008 21:02:18 +0800

Mysql 复制表及结构
一、CREATE TABLE 方法

整表复制 # create table 新表 select * from 旧表;
结构复制 # create table 新表 select * from 旧表 where 1 <>1;

二、INSERT INTO 方法

得到建表语句 # show create table 旧表;
新建表
复制数据到新表 # insert into 新表 select * from 旧表;



truncate\delete\drop

Sat, 16 Aug 2008 16:24:10 +0800

truncate,不带where子句的delete,drop的比较.

相同点:truncate和不带where子句的delete, 以及drop都会删除表内的数据

不同点:
1. truncate和 delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);
依赖于该表的存储过程/函数将保留,但是变为invalid状态.

2.delete语句是DML,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncate,drop是DDL, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
truncate会删除相关的index

3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
显然drop语句将表所占用的空间全部释放
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse



工作log

Sun, 13 Jul 2008 02:58:48 +0800

存储过程还不会写 (image)
3条sql搞定了,仅作记录
/*重命名*/
update t_xmgl_xm a,t_khgl_khzl b,t_xt_dm c set a.xmmc=concat('2008年',b.khmc,c.mc,'1') where c.lx=4 and a.khids is null and a.khid=b.khzlid and a.xmlxdm=c.dm and a.xmmc not like '%个人项目%';
/*查询重复*/
select cjrq,jzrq,xmmc,xmlxdm,khid from t_xmgl_xm a where (a.xmlxdm,a.khid) in (select xmlxdm,khid from t_xmgl_xm group by xmlxdm,khid having count(*) > 1) order by xmlxdm,khid,cjrq;
/*设置标记*/
update t_xmgl_xm set xmms = concat('(原项目名称:',oldxmmc,')',xmms)