首页 > 数据库 >简单叙述MySQL如何优化?

简单叙述MySQL如何优化?

时间:2024-05-21 20:40:10浏览次数:24  
标签:数据 使用 索引 内存 MySQL 叙述 优化 CPU

  1. 数据库设计优化:

    • 尽量减小占用磁盘空间:
      • 使用较小的数据类型,如mediumint替代int
      • 定义字段为not null,除非需要允许空值。
      • 对于不变的字段,如固定长度的字符串,采用char而不是varchar
    • 优化索引设计:
      • 主索引应尽可能短,以提高效率。
      • 仅创建必要的索引,避免不必要的索引占用资源。
      • 确保索引的第一部分是最常用的字段,以提高检索效率。
    • 数据预处理:
      • 在保存到数据库前对数据进行处理,如格式化、验证等。
      • 所有字段都应有默认值,避免插入数据时出现异常。
  2. 系统用途优化:

    • SQL查询优化:
      • 尽量使用长连接,减少连接和断开的开销。
      • 使用explain解释复杂的SQL语句,优化查询执行计划。
      • 对于关联表的比较,确保字段类型和长度一致。
      • 使用LIMIT语句时,结合order bydistinct,避免全表扫描。
    • 性能优化:
      • 使用truncate table清空表的记录,而不是delete from,以提高效率。
      • 使用存储过程或用户定义函数(Stored Procedure或User Function)优化复杂逻辑。
      • 对于大量数据的导入,使用load data infile命令比单独插入快得多。
    • 经常执行OPTIMIZE TABLE来整理碎片,以提高表的性能。
  3. 系统瓶颈优化:

    • 磁盘搜索优化:
      • 并行搜索,将数据分散存储在多个磁盘中,加快搜索时间。
    • 磁盘读写(IO)优化:
      • 并行读取数据,从多个介质中同时读取数据以提高读取速度。
    • CPU周期优化:
      • 增加CPU数量以处理存放在主内存中的大量数据。
    • 内存带宽优化:
      • 提高内存带宽,以加快CPU将更多数据存放到缓存中的速度。
    • 将频繁进行比较的date类型的数据保存为unsigned int类型,以提高比较速度。

标签:数据,使用,索引,内存,MySQL,叙述,优化,CPU
From: https://www.cnblogs.com/Stars-125/p/18204890

相关文章

  • MySql报错:Lock wait timeout exceeded: try restadina transaction
      这次是在Navicat上复制了一个表结构和数据准备备份一下,然后要用语句批量处理数据,结果导致项目上的更新操作报这个错误。  原因是因为表中的数据量太大,复制表一时半会卡到那了。  于是我在网上搜索了如下办法。尝试在数据库中杀死线程来终止复制表的操作。SELECT*FR......
  • MySQL设置表自增步长
    在MySQL中,我们可以使用AUTO_INCREMENT属性为表的某一列设置自增功能。但是,MySQL本身并不直接支持设置自增步长(incrementstep)的功能,即我们不能直接指定每次自增的数值增加多少。不过,我们可以通过一些间接的方法来模拟这个功能。一、表设置自增字段但首先,让我们看一下如何为一个......
  • mysql报错:(1040, ‘ny connections‘)
    在项目、可视化数据库管理工具(比如:Navicat)连接Mysql数据库时出现:toomanyconnections的错误,偶现情况。原因是Mysql设置的最大连接数太小,连接池已满,实际连接数超过了mysql允许的最大连接数,访问量过高,MySQL服务器抗不住。解决:1、(推荐)修改max_connections,如果这个值已经很大,2、......
  • mysql: Syntax error or access violation: 1055 Expression #2 of SELECT (错误解决办
    Mysql报错:SQLSTATE[42000]:Syntaxerrororaccessviolation:1055Expression#2ofSELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn'seo.ryc_combo_class_cate_list_113.fid'whichisnotfunctionallydependentoncolumnsin......
  • MYSQL造数据占用临时表空间
    在MySQL中,临时表空间通常用于存储如ORDERBY、GROUPBY、DISTINCT、UNION、JOIN等操作中产生的临时数据。当这些操作的数据集太大而无法在内存中完成时,MySQL会使用磁盘上的临时表空间。一、MYSQL造数据占用临时表空间的方法以下是一些方法,我们可以通过它们来“造”数据以占用临......
  • 记一次MySQL执行修改语句超时问题
    异常问题原因分析这个问题发生在开发环境,怀疑是提交事务时终止项目运行,没有提交该事务,造成死锁调试该事务时时间太长,为什么说有这个原因呢,因为通过查找日志显示Theclientwasdisconnectedbytheserverbecauseofinactivity.Seewait_timeoutandinteractive_timeo......
  • Oracle和MySQL的区别
    刚进公司接触到了Oracle,记录一下他们的区别,面试的时候也有问到过,而且上来就是千万级别的数据调优,嘻嘻,我只是一个3年java。题外话,甚至有一些公司会问我java跟C、python的区别,以及具体区别的例子,然后我如果回答上来了,他们会告诉我,这边只做后端而且只用java,笑嘻了就本人最近的使用和......
  • Unity性能优化:什么是内存泄露?
    内存泄漏是优化方面的名词,主要是由于不再使用的资源没有及时清理,来释放内存,造成内存的浪费,造成系统卡顿。 或者说,内存就像花呗,额度就这么多,有借要有还,而且手里有闲钱的时候就记得还,以保证内存的充足,如果占着不用,就会在其他需要使用的时候内存不足,就容易崩溃出现问题。 Unity......
  • mysql
    存储引擎mysql表有几种类型/存储引擎?INNODB,MYISAM,MEMORY,CSV INNODB设计存储结构=内存区域+磁盘区域 刷盘策略: 存储方式特点innodbVSmyisamINNODB特点:1.支持ACID的事务,支持四种隔离级别。2.支持行级锁及外检约束,支持写并发。3.不存储总行数。4.一个innod......
  • mysql中主键、外键、约束、索引
    主键用于唯一标识表中每一行数据,外键用于建立表与表之间关联关系,约束用于限制表中数据的规则,索引用于加速查询。1.主键是一种用于唯一标识表中每一行数据的标识符。在Mysql中,主键可以是一个或多个列的组合,但是必须满足以下条件:主键列的值必须唯一,不能重复。主键列的值不能为......