Schema与数据优化(高性能mysql读书笔记一)

 1、数据类型的选择

1)尽量使用能够存储数据的最小类型

2)尽量使用Mysql提供的数据类型存储相应的结构,例如用date存储时间,用 int unsigned来存储ip
e.g.
SELECT  INET_ATON  ( '192.168.23.4'  ) ;
得到这个IP的值为:  3232241412
SELECT  INET_NTOA  ( 3232241412 ) ;
得到这个值对应的IP是:  192.168 . 23  .4

3)尽量避免null值(not null)
可为null的列,存储值需要更多的存储空间
当可为null的列建立索引的时候,每个索引需要一个额外的字节

4)TIMESTAMP存储空间只占DATETIME的一半,而且会根据时区做自动的更新;但是TIMESTAMP允许的时间范围小的多


2、数据类型

1)TINYINT,SMATINT,MEDIUMINT,INT,BIGINT分别使用8,16,24,32,64位来存储

2)DECIMAL(精确计算)、DOUBLE、FLOAT

3)CHAR、VARCHAR

VARCHAR:存储可变长字符串
VARCHAR需要1或2个额外的字节记录字符串的长度:如果字符串的长度大于255个字节,那么长度用一个1字节记录,否则,用2个字节记录
VARCHAR节省空间,对性能有帮助。但是在update的时候可能需要做额外的工作。
如果一个VARCHAR类型的字段数据需要增长,在Myisam中会将其拆分为不同的片段存储,但Innodb会分裂页使行能够放进页内
适用场景:该列的最长串比平均长度长很多,列更新比较少

CHAR:定长字符串存储
CHAR型并不会存储字符串的长度,而且会删除该字段末尾的空格
适用场景:存储比较短的字符串,或者所有的长度都比较接近,比如md5码,mac地址,手机的udid

BLOB、TEXT
BLOB存储二进制数据,TEXT存储字符串,有字符集和排序规则,只针对TEXT的最前N位进行排序

4)enum
create  table  enum_test(
  e enum ( 'fish'  , 'cat'  , 'dog'  )  not  null
)
select  e +  0 ,e  from  enum_test
适用场景:固定的集合值,因为表中存储的都是enum表中的id,类似字典表

5)DATETIME,TIMESTAMP
DATETIME:范围广(1001-9999),精度为妙,8个字节存储

TIMESTAMP:从1970年1月1日午夜开始(格林尼治)到2038年,4个字节存储,默认为not null-一般情况推荐使用TIMESTMAP(存储空间小)

6)BIT、SET


3、选择标示符
1)整数是标识列最好的选择(快,可用auto_increment)
2) 避免使用string作为标识列(慢,尤其在myisam中,默认对字符串使用压缩索引,会导致查询慢得多)




4、新老表的切换
create  table  auth_user_new  like  auth_user

select  *  from  auth_user

insert  into  auth_user_new   select  *  from  auth_user
#insert data

rename  table  auth_user  to  auth_user_old,auth_user_new  to  auth_user


5、物化视图
物化视图,它是用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,从而快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响 应用程序 中SQL 语句的正确性和有效性;物化视图需要占用 存储空间 ;当 基表 发生变化时,物化视图也应当刷新。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
MySQL高级调优是针对MySQL数据库性能优化的一系列操作和技术手段,旨在提升数据库的响应速度、并发处理能力和稳定性。 首先,在硬件层面,可以通过增加服务器的内存、磁盘带宽和处理器等硬件资源来提升MySQL的性能。同时,可以使用RAID技术提供更高的磁盘I/O性能,并进行适当的磁盘配置和分区。 其次,在数据库设计层面,要合理设计数据库表结构,避免数据冗余和分散索引等问题。使用合适的数据类型和长度,以减小数据存储的空间,提高查询效率。合理划分并使用表空间,提升磁盘IO性能。 在MySQL配置方面,可以根据具体需求和硬件环境,调整参数设置来提高性能,如innodb_buffer_pool_size、innodb_log_file_size、max_connections等参数。同时,通过开启慢查询日志、查询缓存和二进制日志等功能来分析和优化SQL查询性能。 此外,索引的正确使用对MySQL的性能至关重要。通过合理地创建索引和删除不必要的索引,可以极大地提升查询效率。需要注意的是,索引不宜过多,否则会增加写入操作的负担。 在查询语句的编写中,应尽量避免使用SELECT *,而是明确指定需要的字段。同时,合理利用limit、join查询和子查询等功能,减小查询数据集大小和复杂度。 最后,通过监控与调优工具,如MySQL自带的slow query log和performance_schema,可以实时监控和分析数据库的性能瓶颈,及时调整配置和优化SQL查询语句。 综上所述,MySQL高级调优是一个综合性的工作,需要从多个方面进行优化。在硬件、设计、配置、索引、SQL编写和监控等各方面进行细致而合理的调整,才能有效提升MySQL数据库的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值