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%';
+---------------------
相关文档:
一、事务处理(myisam引擎不支持事务,innodb引擎支持事务)
(1)start transaction
(2)commit
(3)rollback,rollback to [savepoint name]
(4)savepoint [savepoint name]
(5)set autocommit=0 or 1
(6)release savepoint [savepoint name]
注意:create、drop等操作,不能回退
二、字符集
1.字符编码 ......
net start mysql //启动mysql服务
net stop mysql //停止mysql服务
mysqld-nt --remove //删除mysql后台服务
mysqld-nt --install //安装mysql后台服务
mysqld-nt可以换成mysqld-max-nt或mysqld
mysql -u root ......
ms sql中的int型默认是4位,mysql的int型默认是11位,前者到后者的移植不会有什么隐患,但是后者到前者的移植就存在位数不够,不能存储大数的隐患。
还有bigint,ms sql是8位,mysql默认是20位。 ......
1、使用索引来更快地遍历表。
缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的索引设计要建立在对各种查询的分析和预测上。一般来说:
a.有大量重复值、且经常有范围查询( > ,< ,> =,< =)和order by、group by发生的列,可考虑建立群集索 ......
在开发项目时,遇到一个问题,就是要随机读取一张表的部分记录,并update设置为不可在读,这里就有一个问题,可能多个人同时随机到相同的记录,并重复做update操作,引起数据脏读和重复操作,
因此考虑给表加锁。但是采用了MyISAM,不支持事务,只能加表级锁,而且别人连读的权限都没有。下面是2个测试文件,在firef ......