数据库优化工作一般考虑4个方面
数据库设计
sql语句优化
数据库参数设置
恰当的硬件资源和操作系统
一、数据库设计
- 三范式
- 一张表有一个主键
二、sql语句优化
- explain
- 全局查询日志(general_log)
mysql的存储引擎innodb和myisam的区别
myisam不支持外键
myisam不支持事物
myisam删除数据之后,空间不释放。
myisam创建一张表会有3个文件(.frm;.myd;.myi),而innodb会有1个文件.frm 数据放在ibdatal文件中。
myisam支持表锁,innodb支持行锁(但是行锁依赖于sql的使用了索引)
oracle和mysql的不同
锁
oracle行锁,mysql的innodb支持行锁(但是前提是查询的sql语句走了索引)
事务的隔离级别
oracle支持Serializable和Read committed(默认)
mysql支持四种,默认是Repeatable read(innodb才支持事务)
事务提交方式
oracle需要手动提交
mysql默认自动提交,可设置auto_commit为0,为手动提交。
分表分库
oracle可以使用表分区的方式实现分表
mysql的表分区不是太成熟,只能使用table[n],使用取模的方式实现。
还有一种分表,是使用的不同的根据时间丽都来分表,这样的表中会有所有的数据,(根据时间和设备分组取平均值或者最大值)
分库的话淘宝有一个插件Cobar,可是实现数据库的分库,外在建立数据库连接是连接在一个虚拟的数据库之上,在虚拟数据库,操作分配物理数据库。
语法
分页、字符串连接,赋值、自增长、表名称,字段名称,长度不一样