MySQL性能优化(一)-- 存储引擎和三范式

一、MySQL存储引擎

  

二、存储引擎如何选择

  • 是否支持事务
  • 检索和添加速度
  • 锁机制
  • 缓存
  • 是否支持全文索引
  • 是否支持外键

三、MyISAM和InnoDB对比

  

四、什么时候使用MyISAM和InnoDB

  MyISAM:读事务要求不高,以查询和插入为主,例如各种统计表。

  InnoDB:对事务要求高,保存的是重要的数据,例如交易数据,支付数据等,对用户重要的数据,建议使用InnoDB。

五、配置和数据文件

  1.配置文件默认位置

    Linux: /etc/my.cnf

    Windows: my.ini

  2.数据文件位置

   1) 查看数据文件位置的命令: show variables like ‘%datadir%‘ ;

   2) 数据文件格式:

      InnoDB:frm(存储的表结构)、ibd(存储的数据和索引)

      MyISAM:frm(存储的表结构)、MYD(存储的数据)、MYI(存储的索引)

六、数据库表设计

  1).范式概念

     1NF:列不可分。每一列都是不可分割的基本数据项

     2NF:1NF的基础上面,非主属性完全依赖于主关键字

     3NF:属性不依赖于其它非主属性 , 消除传递依赖

  2).1NF

   假设我们有一个学生表,字段包括:id,name,age,contact,如下:

id name age contact
1 张三 20 phone:053756666;QQ:100001
2 李四  19 phone:053757777;QQ:100002

   当我们需要根据QQ来查询学生的时候,就查询不出,所以以上的设计就不符合1NF。我们可以将contact字段拆分为phone和QQ:

id name age phone QQ
1 张三 20 053756666 100001
2 李四 19 053757777 100002

  3).2NF

   假设我们有一个订单表,字段包括:id,productId,price,num,productName,如下:

id productId price num productName
1 101 20 10 圆珠笔
1 102 18 20 笔记本

   订单中,一个订单会有多个商品、明细。

  未完成…………………………………………………………………………

时间: 2024-09-30 18:16:56

MySQL性能优化(一)-- 存储引擎和三范式的相关文章

MySQL数据库性能优化之存储引擎选择

MyISAM 1.特性 不支持事务:MyISAM存储引擎不支持事务,所以对事务有要求的业务场景不能使用 表级锁定:其锁定机制是表级索引,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能 读写互相阻塞:不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读 只会缓存索引:MyISAM可以通过key_buffer缓存以大大提高访问性能减少磁盘IO,但是这个缓存区只会缓存索引,而不会缓存数据 2.适用场景 不需要事务支持(不支持) 并发相对较低(锁定机

Mysql 性能优化3 如何选择存储引擎

Mysql 使用 插件式存储引擎 Mysql 体系结构 mysql服务层 存储引擎层 都属于存储引擎                            MyISAM 存储引擎    frm 是记录结构的, MYD和 MYI 是MyISAM 特有的   例    表级锁,对数据进行修改时需要全表加锁.读取时也是需要家共享锁.对读写操作并发性不是很好,但是只读的话不怎么影响,共享锁不阻塞共享锁 支持全文索引. 支持text,blob,前500个字符的前缀索引. 如果是只读表的话,就是没有修改操作

mysql 性能优化方案 (转)

网 上有不少MySQL 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果,因此简单地根据某个给出方案来配置mysql是行不通的,最好能使用 status信息对mysql进行具体的优化. mysql> show global status; 可以列出mysql服务器运行各种状态值,另外,查询mysql服务器配置信息语句: mysql> show variables; 一

《mysql技术内幕 InnoDB存储引擎(第二版)》阅读笔记

一.mysql架构 mysql是一个单进程多线程架构的数据库. 二.存储引擎 InnoDB: 支持事务 行锁 读操作无锁 4种隔离级别,默认为repeatable 自适应hash索引 每张表的存储都是按主键的顺序记性存放 支持全文索引(InnoDB1.2.x - mysql5.6) 支持MVCC(多版本并发控制)实现高并发 MyISAM: 不支持事务 表锁 支持全文索引 三.InnoDB体系架构 1.后台线程 Master Thread 负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性 IO

MySQL 性能优化---索引及优化

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 一.MySQL性能优化之-影响性能的因素 1.商业需求的影响 Myisam存储引擎内置一个计数器,count(*)时直接从计数器读取:而通过innodb存储引擎查找某个数据时,是必须扫描全表的,所以当执行对表的统计(即使用count(*)函数)时,myisam要比innodb要快的很多.所以一般在innodb上执行count(*)时一般要

MySQL性能优化的最佳经验

1.为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的.当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了. 这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的.因为,我们某些查询语句会让MySQL不使用缓存.请看下面的示例下载地址   : // 查询缓存不开启 $r = mysql_query("SELECT username FRO

MySQL性能优化的最佳经验,随时补充

1.为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的.当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了. 这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的.因为,我们某些查询语句会让MySQL不使用缓存.请看下面的示例: // 查询缓存不开启 $r = mysql_query("SELECT username FROM user

mysql性能优化总结1

MySQL性能优化总结 一.MySQL的主要适用场景 1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图: 三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件.首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD和.MYI文件,分别存放了表的数据(.MYD)和索引数据(.MYI).每个表都有且仅有这样三个文件做为MyISAM存储类型的表的存

Mysql5.7—mysql性能优化-索引、语句、配置(运维必备)

小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------谢谢您的参考,如有疑问,欢迎交流 一. 数据库的类型 1) 第一代数据库: 基于层次模型与网状模型的数据库 层次型数据库比较经典的是IBM公司的IMS(InformationManagement System)数据库,层次型数据库提供了良好的完整性支持,模型简单,对具有一对多层关系的部们描述非常自然.直观,容易理解,比较适用于那些实体间联系是固定的且预先定义好的环境,其性能优于关