隔离级别
1 隔离级别 脏读(Dirty Read) 不可重复读(NonRepeatable Read) 幻读(Phantom Read)
2 读未提交(Read uncommitted) 可能 可能 可能
3 读已提交(Read committed) 不可能 可能 可能
4 可重复读(Repeatable read) 不可能 不可能 可能
5 可串行化(Serializable ) 不可能 不可能 不可能
MySQL 事务
- Mysql 默认提交数据的 AUTOCOMMIT ON
- InnoDB 行级别锁 多版本并发控制,NDB Cluster Falcon 是事务型 MyISAM 是非事务的 表级别锁,在混合事务的时候不能保证数据一致性
- InnoDB 使用二相锁定协议 一个事务在执行的时候会获得锁,在commit 或者rollback的时候释放锁,可以显示制定锁 例如 LOCK IN SHARE MODE ,FOR UPDATE
查看 表的状态
show table status like '表名'
MyISAM MySQL 默认的数据库引擎 不支持事务和行级锁
表转换
alter table方式 alter table mytable engine = innoDB; 复制表
打开MySql慢查询日志
修改my.conf
#打开慢查询
log-slow-queries = <file_name>
#记录查询大于2秒的记录, 默认是10秒
long_query_time = 2
#记录没有使用索引的查询
log-queries-not-using-indexes
#记录运行较慢的管理命令
log-slow-admin-statements
- 取查看MySql 数据库状态 show status show processlist
- FLUSH STATUS 刷新状态
- SQL_NO_CACHE MySql 不会缓存结果 例如 select sql_no_cache * from admin_user
- show profile cpu for query 1 ; 查看用户查询CPU使用率
选择优化的数据类型- 更小通常更好,正确的存储和表示数据的最小类型,更小的数据类型通常更快,更少的使用存储空间 内存和CPU缓存
- 简单就好 越简单的数据类型需要的CPU周期越少
- 尽量避免NULL
- 整数 数据类型包括 TINYINT(8) SMALLINT(16) MEDIUMINT(24) INT(32) BIGINT(64),所有类型都包含UNSIGNED熟悉 ,表示不允许为负数,并且正数上限提高一倍
- 实数FLOAT(4) DOUBLE(8) 保存精确的小数 DECIMAL可以定义精度 比如DECIMAL(8,2)会在小数点前保留6位,后2位
- 字符串类型p66
posted on 2012-05-27 21:14
岩石 阅读(258)
评论(0) 编辑 收藏