Mysql的日志类型与设置。
1.普通log
记录所有sql操作,包括select,show语句。
设置
默认是不打开此log。
打开时可以指定目录,不指定时保存在数据库录目录下。
[mysqld]
log = /data/logs/mysql.log #此方式为指定文件
log = 1 #此文件默认保存在数据库目录下
log-output = TABLE,FILE #加上此参数可以同时把日志存储到数据表中,mysql库下。一般为CVS格式 ,当然可选其中一个参数就行
#默认是FILE值
2.错误日志
设置
[mysqld_safe] #此节点设置了会优先读此节点,[mysqld]着节点会无效,不知道为啥?
log-error=/data/logs/mysqld-err.log #同样可以指定目录,不指定默认存储在数据库目录下 xxx.err
3.慢查日志
设置
[mysqld]
log_slow_queries = /data/logs/mysql-slow.log #不指定默认为 msyql-slow.log
long_query_time = 1 #此值默认为10,最小为1,5.1有个google的补丁可以准确的毫秒。
log_queries_not_using_indexes = 1 #没使用索引的查询,存储过程会认为没使用索引而记录下来,默认是0。
4.二进制日志
特别说明: 二进制日志 并不记录select,show等不改变数据的sql语句,它主要功能是用于:数据恢复与数据复制。其带来的性能消耗远不如普通 日志高。默认是不打开的。如果使用事务型数据引擎InnoDB会有自己的二进制日志。特别是服务器使用主从架构时,必需开二进制日志,在机群情况下。
设置
[mysql]
log-bin = mysql-binlog #生成格式为 mysql-binlog.00000X 形式。这里不要写完整目录,写个名字就行,日志会存储在数据库目录下。
使用 show variables like '%log%'; 命令可以查看当前日志相关设置。
mysql> show variables like 'log%';
+---------------------
相关文档:
我有一个表
CREATE TABLE `test1` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`desc` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
(1)以下查询会报错误:[Err] 1221 - Incorrect usage of UNION and ORDE ......
MySQL安装目录下的Data目录中 .err错误信息:
Default storage engine (InnoDB) is not available
解决办法:
删除在MySQL安装目录下的Data目录中的
ib_logfile0
ib_logfile1
重新启动MySQL的Service ......
ms sql中的int型默认是4位,mysql的int型默认是11位,前者到后者的移植不会有什么隐患,但是后者到前者的移植就存在位数不够,不能存储大数的隐患。
还有bigint,ms sql是8位,mysql默认是20位。 ......
1、使用索引来更快地遍历表。
缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的索引设计要建立在对各种查询的分析和预测上。一般来说:
a.有大量重复值、且经常有范围查询( > ,< ,> =,< =)和order by、group by发生的列,可考虑建立群集索 ......