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也能导致连接失败。
当然,主机没有启动也能导致连接失败,启动不了的话,就要联系服务提供商了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)