wordpress百万级数据如何优化数据库

wordpress百万级数据如何优化数据库,第1张

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。“总是在灾难发生后,才想起容灾的重要性。总是在吃过亏后,才记得曾经有人提醒过。”,所以此处列出一些MySQL的必要的优化和建议。

1. 核心类

♦ 不在数据库做计算,cpu计算务必移至业务层;

♦ 控制单表数据量,单表记录控制在千万级;

♦ 控制列数量,字段数控制在20以内;

♦ 平衡范式与冗余,为提高效率可以牺牲范式设计,冗余数据;

♦ 拒绝3B(big),大sql,大事务,大批量;

2. 字段类

♦ 用好数值类型

tinyint(1Byte)

smallint(2Byte)

mediumint(3Byte)

int(4Byte)

bigint(8Byte)

bad case:int(1)/int(11)

♦ 有些字符转化为数字

例如:用int而不是char(15)存储ip

♦ 优先使用enum或set

例如:sex enum (‘F’, ‘M’)

♦ 避免使用NULL字段

NULL字段很难查询优化

NULL字段的索引需要额外空间

NULL字段的复合索引无效

bad case:

name char(32) default null

age int not null

good case:

age int not null default 0

♦ 不在数据库里存图片

3. 索引类

♦ 谨慎合理使用索引

改善查询、减慢更新

索引一定不是越多越好(能不加就不加,要加的一定得加)

覆盖记录条数过多不适合建索引,例如“性别”

♦ 字符字段必须建前缀索引

♦ 不在索引做列运算

bad case:

select id where age +1 = 10

♦ innodb 主键合理使用自增列

主键建立聚簇索引

主键不应该被修改

字符串不应该做主键

如果不指定主键,innodb会使用唯一且非空值索引代替

♦ 不用外键,请由程序保证约束

4. sql类

♦ sql语句尽可能简单

一条sql只能在一个cpu运算

大语句拆小语句,减少锁时间

一条大sql可以堵死整个库

♦ 简单的事务

事务时间尽可能短

bad case:

上传图片事务

♦ 避免使用触发器,用户自定义函数,请由程序取而代之

♦ 不用select *

消耗cpu,io,内存,带宽

这种程序不具有扩展性

♦ OR改写为IN()

♦ OR改写为UNION

PS:最新的mysql内核已经进行了相关优化

♦ limit高效分页

limit越大,效率越低

select id from t limit 10000, 10

应该改为 =>

select id from t where id >10000 limit 10

♦ 使用union all替代union,union有去重开销

♦ 尽量不用连接join

♦ 务必请使用“同类型”进行比较,否则可能全表扫面

♦ 打散批量更新

♦ 使用新能分析工具

show profile

mysqlsla

mysqldumpslow

explain

show slow log

show processlist

show query_response_time(percona)

RDS是阿里云提供的即开即用的关系型数据库服务,兼容了MySQL和SQL Server两种数据库引擎。在传统数据库的基础上,阿里云RDS提供了强大丰富的功能从而保证了高可用性、高安全性以及高性能。此外,RDS还提供了诸多便利功能提升了RDS的易用性。

★高可用:

采用主从热备的架构。主机down机或者出现故障后,备机秒级完成无缝切换,服务可用性承诺:99.95%

提供自动多重备份的机制。用户可以自行选择备份周期,也可以根据自身业务特点随时进行临时备份,数据可靠性承诺:99.9999%

数据回溯到任意时间点。用户可以选择7天内的任意时间点创建一个临时实例,临时实例生成后验证数据无误,即可将数据迁移到RDS实例,从而完成数据回溯 *** 作。

★高安全

提供白名单访问策略。可自行设置允许访问的IP及IP段,有效防止黑客扫描端口进行服务器攻击。

提供阈值报警的功能。支持实例锁定报警、连接数报警、IOPS报警、磁盘空间使用报警、CPU报警等。

提供SQL注入告警。将对发往RDS的疑似SQL注入的语句进行记录并展示,供用户进行程序调整,杜绝SQL注入的发生。

SQL审计。记录所有发往RDS的SQL语句,系统将记录SQL语句相关的连接IP、访问数据库的名称、执行语句的账号、执行时间、返回记录数等信息。供用户对RDS安全性进行排查。

控制台 *** 作日志。记录所有在控制台上进行的修改类 *** 作,便于管理员查看并管理RDS。

★高性能

RDS使用高端服务器来保障每个数据库都拥有良好的性能。

针对MySQL类型的RDS,数据库版本融合了阿里巴巴官方数据库补丁,有效的提升了RDS的性能。

性能监控。提供多种监控图方便用户跟踪RDS的性能状况。如IOPS、连接数、磁盘使用空间、CPU利用率、QPS\TPS、网络流量以及多种数据库的内部监控指标图

慢SQL汇总分析。将数据库中的慢SQL进行相似语句去重,按照指定方式排序后进行展示,为用户排查慢SQL优化数据库性能提供帮助。

优化建议。提供多种优化建议方便用户优化数据库性能,如:存储引擎检查、大表检查、无主键检查、索引过多表检查、缺失索引检查等

★易用性:

提供向导式迁移服务,使用户能够通过WEB端管理控制台轻松将自建数据库迁移至RDS。

快捷查看数据库系统日志,用户能够RDS管理控制台查看数据库级别的系统日志。

便捷 *** 作数据库实例。提供完善的WEB端管理控制台,帮助用户 *** 作数据库实例,如重启实例、删除BINLOG、备份等等。

轻松升级,按量付费。RDS提供实例配置和数据库版本的在线升级服务,随开随用,按量付费,资源业务轻松拓展。

原来建立的数据库和配置里的数据库名字不一样,登录不上去,还有一个原因可能是密码问题

建立连接必须WordPress程序的wp-config的:

[php] view plaincopyprint?

// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //

/** WordPress数据库的名称 */

define('DB_NAME', 'xxx_db')

/** MySQL数据库用户名 */

define('DB_USER', 'xxx')

/** MySQL数据库密码 */

define('DB_PASSWORD', '*********')

/** MySQL主机 */

define('DB_HOST', 'xxxxxxxx.com')

是和实际的数据库名、数据库登录账号、登录密码一致、主机名一致的。

最好在wp-config.php里加入代码:

[html] view plaincopyprint?

define('WP_ALLOW_REPAIR', true)

这样保证能及时的修复数据库中损坏的表,损坏的表wp-option也能导致连接失败。

当然,主机没有启动也能导致连接失败,启动不了的话,就要联系服务提供商了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10866839.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存