优化页面访问速度(二) ——数据库优化 (原创内容,转载请注明来源,谢谢) 一、概述 数据库优化,主要包括数据表设计、索引、sql语句、表拆分、数据库服务器架构等方向的优化。...二、数据库设计 在建表的时候,就需要考虑到将来的使用场景,尽量在建表初期就设计好。 1、存储引擎 Mysql常被提到的存储引擎就是InnoDB和MySIAM,其实现在主要都在用InnoDB了。...2、其他查询优化 1)如果不需要全量数据,可以考虑用limit。...2)避免用子查询,mysql的子查询,内部执行计划器是这样执行的:先查外表再匹配内表,而不是先查内表,当外表的数据很大时,查询速度会非常慢。...3、分区 分区是mysql自带的功能,其原理是将一个表的数据存在不同的文件中,由mysql根据内部规则,自动去对应的数据文件找数据。
,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已。...3、优化维度 数据库优化维度有四个: 硬件、系统配置、数据库表结构、SQL及索引。...推荐:37 个 MySQL 数据库小技巧,不看别后悔!...推荐大家看下:MySQL 调优/优化的 101 个建议!...另外,思考将来我们的业务是否真的需要MySQL,还是使用其他种类的数据库。用数据库的最高境界就是不用数据库。 五、数据库优化 SQL优化方向:执行计划、索引、SQL改写。
,我们还可以对数据表进行减肥和优化,来提高 WordPress 的速度。...删除所有日志修订 日志修订是所有速度慢的罪恶之源,几百篇日志会有几千条日志修订的记录,所以用力删除把,提速效果非常明显: DELETE a,b,c FROM wp_posts a LEFT JOIN...关闭日志修订 日志修订不是好东西,你可以关闭它或者限制数据库存的修订个数: 关闭日志修订: define('WP_POST_REVISIONS', false); 限制日志修订为最新的3个: define...优化 wp_posts 表 对 MySQL 数据记录进行插入、更新或删除时,会占有不同大小的空间,记录就会变成碎片,且留下空闲的空间。就像具有碎片的磁盘,会降低性能,需要整理,因此要优化。...删除所有垃圾留言 不用到后台一条一条删除,只需下面一条 MySQL 即可: DELETE FROM wp_comments WHERE comment_approved != '1'; 5.
2、mysql数据库优化 可以从哪几个方面进行数据库的优化?如下图所示: ?...这个时候就要了解sql优化 B、数据库表结构优化 根据数据库的范式,设计表结构,表结构设计的好直接关系到写SQL语句。...C、系统配置优化 大多数运行在Linux机器上,如tcp连接数的限制、打开文件数的限制、安全性的限制,因此我们要对这些配置进行相应的优化。...D、硬件配置优化 选择适合数据库服务的cpu,更快的IO,更高的内存;cpu并不是越多越好,某些数据库版本有最大的限制,IO操作并不是减少阻塞。...注:通过上图可以看出,该金字塔中,优化的成本从下而上逐渐增高,而优化的效果会逐渐降低。
数据库命令规范 •所有数据库对象名称必须使用小写字母并用下划线分割•所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)•数据库对象的命名要能做到见名识意...500 万并不是 MySQL 数据库的限制,过大会造成修改表结构,备份,恢复都会有很大的问题。 可以用历史数据归档(应用于日志数据),分库分表(应用于业务数据)等手段来控制数据量大小 5....通常存储于文件服务器,数据库只存储文件地址信息 9. 禁止在线上做数据库压力测试 10. 禁止从开发环境,测试环境直接连接生成环境数据库 ---- 数据库字段设计规范 1....因为 MySQL 优化器在选择如何优化查询时,会根据统一信息,对每一个可以用到的索引来进行评估,以生成出一个最好的执行计划,如果同时有很多个索引都可以用于查询,就会增加 MySQL 优化器生成执行计划的时间...避免使用子查询,可以把子查询优化为 join 操作 通常子查询在 in 子句中,且子查询中为简单 SQL(不包含 union、group by、order by、limit 从句) 时,才可以把子查询转化为关联查询进行优化
配置优化数据库 提高读取速度 表建索引 分区表 优化查询语句 insert table values select * from table limit 1 delete from table limit...1 避免使用匹配和排序,导致的效率低下 提高写入速度 innodb_flush_log_at_trx_commit = 0; bulk_insert_buffer_size = 100000000;...事务不能嵌套(嵌套的事务自动提交前面的数据,这影响效率,可以通过定时commit的方式提交数据),事务模式需要关闭自动提交功能 事务同时提交多条数据,提交单条数据,可以设置自动提交 多线程 多线程访问数据库使用多个数据库连接...,不要跨线程使用同一个数据库连接
存储引擎的特点:本身是MySQL数据库服务器的底层组件之一,最大的特点是采用“可插拔”的存储引擎架构。...缺点:索引读取速度较慢、只针对MyISAM存储引擎的表进行合并、实际应用较少等。 4. MEMORY存储引擎 MEMORY存储引擎:在是MySQL中一种特殊的存储引擎。...作用:主要用于收集数据库服务器性能参数。 9. FEDERATED存储引擎 FEDERATED存储引擎:默认情况下在MySQL中不可用。 启动:利用“–federated"选项。...索引分类 普通索引:是MySQL 中的基本索引类型,使用KEY或INDEX定义,不需要添加任何限制条件,作用是加快对数据的访问速度。...从数据库优化的角度来考虑:尽量减少表级锁定时间,提高多用户的并发能力。. 如何释放“显式”表级锁: UNLOCK TABLES语句。
1、缓存池的大小:innodb_buffer_pool_size 内存的70~80% image.png 2\ innodb_log_file_size 写入的速度 一般为512MB,如果频繁写入...slow_query_log 1 8 long_query_time 1 超过1秒就是慢 9 show_query_log_file image.png binlog-do-db ignore MHA构建高可用mysql...image.png mysql 设置从库 read_only = 1
仍觉满天星辰不如你', 1); SET i = i + 1; END while; end 我们先插入10000条,太少了查询时间没差异 3、sql优化...source=dra 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 。...因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。...23.在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果数据量不大,为了缓和系统表的资源,应先create...在结果集中包括“合计”的例程通常要比使用游标执行的速度快。如果开发时间允许,基于游标的方法和基于集的方法都可以尝试一下,看哪一种方法的效果更好。
引言: 关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂偶尔发现了这篇文章,总结得很经典,文章流量也很大,所以拿到自己的总结文集中,积累优质文章,提升个人能力,希望对大家今后开发中也有帮助...因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。...7、使用索引 索引是提高数据库性能的常用方法,它可以令数据库服务器以比没有索引快得多的速度检索特定的行,尤其是在查询语句当中包含有MAX(),MIN()和ORDERBY这些命令的时候,性能提高更为明显。...8、优化的查询语句 绝大多数情况下,使用索引可以提高查询的速度,但如果SQL语句使用不恰当的话,索引将无法发挥它应有的作用。 下面是应该注意的几个方面。...SELECT * FROM books WHERE name like"MySQL%" 但是如果换用下面的查询,返回的结果一样,但速度就要快上很多: SELECT *
1、对查询进行优化,应尽可能避免全表扫描 首先应考虑在 where 及 order by 涉及的列上建立索引。 下面我们来以一个表中177条数据比较一下,全表扫描与建立索引之后性能的一个比较....从这两种方式查询数据库结果看,建立索引之后查询速度提高了些,现在数据量还不明显,如果表中有10万条速度,差异就会很明显了. 2、写数据语句时尽可能减少表的全局扫描 1)减少where 字段值null判断...exists (select rowed from "tb_real" where rowed = tb_real.rowid); 5、论索引技巧 1)并不是所有索引对查询都有效 SQL是根据表中数据来进行查询优化的...在结果集中包括“合计”的例程通常要比使用游标执行的速度快。如果开发时间允许,基于游标的方法和基于集的方法都可以尝试一下,看哪一种方法的效果更好。...作者: 曹理鹏@iCocos 链接:https://icocos.github.io/2019/03/11/数据库查询速度优化之解决技巧/
设计优化 III.1存储引擎的选择 Myisam:数据库并发不大,读多写少,而且都能很好的用到索引,sql语句比较简单的应用,TB数据仓库 Innodb:并发访问大,写操作比较多,有外键、事务等需求的应用...索引的缺点:占用磁盘空间,减慢了数据更新速度,增加了磁盘IO。 添加索引有如下原则: 1. 选择唯一性索引。 2. 为经常需要排序、分组和联合操作的字段建立索引。 3....IV Mysql软件优化 开启mysql复制,实现读写分离、负载均衡,将读的负载分摊到多个从服务器上,提高服务器的处理能力。...使用推荐的GA版本,提升性能 利用分区新功能进行大数据的数据拆分 V Mysql配置优化 注意:全局参数一经设置,随服务器启动预占用资源。...VI Mysql语句级优化 1. 性能查的读语句,在innodb中统计行数,建议另外弄一张统计表,采用myisam,定期做统计.一般的对统计的数据不会要求太精准的情况下适用。 2.
explain 中 Extra 发生排序 的 标志是 Using Filesort(不是说进行磁盘文件排序,只是一个标志而已) 13.由于MySQL数据库是基于行(Row)存储的数据库,而数据库操作 IO.../mysql-slow.log long_query_time = 0.1 3.通过 mysqld restart 重启数据库 (但是自己重启后仍然没有配置成功)...: https://blog.csdn.net/cx136295988/article/details/76690722 15.mysql常量含义 用于配置数据库 ...https://blog.csdn.net/longxibendi/article/details/6704969 16.数据库优化规则。 ...的值等,通过拆分表格,放到新表中,达到减少查询数据量的目的 4.进行批量操作 5.优化业务逻辑,根据实际业务数据情况进行优化sql查询方式等
11.1 查看数据库状态 可以通过show status、show innodb status 来查看MySQL数据库的状态,使用mysqlreport这个第三方工具可使数据库状态报告更好看(mysqlreport...本质是通过MySQL内部命令和工具来统计状态的)。...11.2 正确使用索引 在影响数据库查询性能的众多因素中,索引绝对是一个重量级的因素,如果索引使用不当,则数据库的其它优化可能无济于事。...查询优化器会为一次查询是否使用索引以及决定使用哪个索引,当然,有时查询优化器也会犯错误。...MySQL的临时表可以创建在磁盘、内存和临时文件中。当然,创建在磁盘上的开销最大。
MySql数据库优化细节 MySQL 数据库性能的优化是 MySQL 数据库发展的必经之路, MySQL 数据库性能的优化也是 MySQL 数据库前进的见证。...记录一些MySQL优化的一些细节 选取最适用的字段属性(出处) MySQL 可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。...因为在 MySQL 中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。...来完成这个查询工作,速度将会快很多。...拆分复杂SQL为多个小SQL,避免大事务 避免使用:触发器、函数、存储过程、视图 避免在数据库中进数学运算 MySQL不擅长数学运算和逻辑判断 避免取出大字段且无用的内容 SELECT只获取必要的字段
1.mysql主要存储引擎 MyISAM 和 InnoDB MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。...2.字段最好不要给数据库留NULL,尽可能的使用NOT NULL填充数据库。 优化方案:每个字段设置默认值 3.应尽量避免在 where 子句中使用 !...LIMIT 1 21.每张表都必须要有一个自增长int的id主键,使用VARCHAR类型来当主键会使用得性能下降,主键的性能和设置变得非常重要,比如 集群拆表 22.目前项目中最大瓶颈就数据库...,必要时用memcached/redis缓存来降低数据库的负载。...附 规范 数据库boolean.....
不管对于哪种服务,对于其优化,无非是从两个方面着手,第一个是对于硬件方面的优化,第二个是对系统以及服务本身的优化。...注意:测试完成之后,记得要关闭调试功能,以免影响数据库的正常使用。 注意:测试完成之后,记得要关闭调试功能,以免影响数据库的正常使用。...注意:测试完成之后,记得要关闭调试功能,以免影响数据库的正常使用。...四、对数据库表结构进行优化 对数据库表结构的优化大概可以从以下几个方面着手: 将字段很多的表分解成多个表,尽量避免表字段过多; 增加中间表,合理增加冗余字段; 优化插入记录的速度; 在插入数据之前禁用索引...autocommit=0; 分析表,检查表和优化表 所谓分析表,就是分析关键字的分布,检查表就是检查是否存在错误,优化表就是删除或更新造成的空间浪费。
有什么错漏,说一下,数据库这些都是经验之谈,总有错过的。...一 数据库设计 以前都说三大范式,具体应该叫数据库范式 第一范式-表的数据不重复,数据是唯一的 第二范式-表的数据有主键,数据是有主属性可查的 第三范式-表的其他普通数据不依赖其他普通数据,就是依赖的数据记得给索引...而每次新增都要新增其他子集表,给数据库带来极大压力。 故第五范式淘汰。总结,字典表可小功能实现,不要求到整个项目。...也就是说我们设计数据库,符合第一第二范式就是一个合格的基本设计了。给表加主键!而其他的地方都是我们优化的点! 二 常用的的优化 字段固定长度,尽可能短。...启动查询缓存 更换数据库引擎。(到了这步,还不如重新设计) 读写服务分离。 三 索引设计 如何建立索引一定会用到explain命令,查询性能分析,以前写过,现在就不说了。
数据库结构优化 优化数据大小 使表占用尽量少的磁盘空间。减少磁盘I/O次数及读取数据量是提升性能的基础原则。表越小,数据读写处理时则需要更少的内存,同时,小表的索引占用也相对小,索引处理也更加快速。...如果主要的负载在缓存命中率及磁盘读写速度,那么这种格式将能够提升数据库反应速度。如果是极端情况负载受限于CPU性能,那么使用这种格式则会降低数据库性能。...不同表的相同的列设置相同的配置,以便于加快联合查询的速度。 使用简洁的列名。通用列名使用。同时也能简化查询语句。为了保持不同数据库服务器间的可移植性。考虑保持列名大小小于18个字符。...索引 联合查询 规范化 优化MySQL 数据类型 Numeric 数据优化 对于唯一的IDs 或者其它既可以使用string类型也可以使用numbers类型的列,优先使用numeric 类型。...同一个数据库中表过多的缺点 如果数据库中MyISAM 表过多,打开,关闭和创建表操作会变得很慢,当执行多表查询时,可能会发生表缓存溢出。
领取专属 10元无门槛券
手把手带您无忧上云