网站数据库优化方案(数据库优化设计方案)

前沿拓展:

网站数据库优化方案

今天给大家分享一个企业网站的优化方案关于水性涂料的,通过网站关键词定位,用户需求、网站基础优化、网站高质量的文章如何打造等等相关优化方案来提高网站长尾关键词,快速提高网站的主关键词的排名,按照这个seo优化方案操作的话七天就可以看到优化效果。

1.网站用户需求优化方案seo优化误区:

网站的标题做的关键词没有搜索指数、标题长度已经大大超过百度白皮书的规定的60个字节。这些细节都会导致网站优化基础得分降低。

seo优化方案:通过流量分析、竞争对手分析、用户需求转化率分析确定网站的核心关键词。如:水性涂料 这个关键词,每日pc端的搜索指数是374,移动端的搜索指数是93,从中可以发现搜索这个关键词的用户有一半左右的人,是通过移动端搜索的,所以公司有必要做移动端网站的适配,提高在移动端的自然排名。

2.核心关键词用户需求分析

用户需求分析,用户搜索核心关键词“水性涂料”进入网站,那用户是想找到什么样的结果。通过大量的数据的分析可以得出80%以上的用户关心的是a:水性涂料配方 b:水性涂料生产线 c:水性涂料有哪些 d:水性涂料性能检测 等等相关信息。

优化方案指导:试问:用户通过关键词搜索没能找到自己满意的信息,不能满足用户相关搜索结果,你能留住客户继续在网站在浏览,谈合转化率。所以seo的本质不是为了获取自然排名而做的,更多的是为用户精心设计的,也是我们常说的seo利他之心。在给别人提供有价值信息的同时,你自己也从中获益,这才是seo网站优化的初忠。核心关键词用户需求分析。

3.如何写出高质量的文章优化误区:

网站文章质量低,目标网站虽然收录了100多个结果,但是文章的相关度太低,原创度不高,导致网站虽然被收录,已经很早的把文章放到了搜索引擎数据库的底层,对网站后期长尾关键词的排名没有很大的帮助。间接的影响网站权重低,搜索引擎的自然排名靠后的原故。

seo优化方案:a:提高文章的质量,如图片并茂。b:做好行业间的差异化,遵循人无我有、人有我优化的理念。c:做好网站站内的内链和相关推荐,降低网站的跳出率,提高网站的用户体验,间接的提高网站权重,和核心关键词的自然排名。

4.网站基础seo优化网站基础优化:

目标网站一些常见的基础优化如网站301重定向、网站地图制作、网站robots文件、网站404页面,网站链接的标准备化、站内图片的alt属性、这些网站建设公司都不会帮你做的,毕竟这些是seo专员份内的事情。网站的基础优化决定了一个网站的基础得分,也决定了网站是否能很好的冲入搜索页面的20名到100名。

seo优化方案:做好网站的基础优化,提高站内的得分,获取进入核心关键词的20名到100名之内,当一个月以后,就可以冲入百度首页。因为百度的算法,网站核心关键词的20名到100名之间和前20名之间seo的优化策略是不同的。针对网站的当前的状态提出最有利于seo优化方案。


在高并发的情况下,数据库的性能会显著下降。因此我们有必要针对高并发的场景下,对于数据库进行性能优化。

常见的优化方式有以下几种:

一、增加缓存

增加缓存包括增加外部缓存和增加数据库查询缓存两种。外部缓存例如使用内存数据库Redis,开发人员将一些固定的数据读取Redis中,直接在其中查询,从而避免对数据库进行IO操作,节省系统开销。

增加数据库缓存,以MySql为例,可以在my.cnf中,添加以下配置:

query_cache_size=256M

query_cache_limit=10M

query_cache_type=1

注意,配置之后需要重启数据库。

其中query_cache_size为总缓存大小,官方推荐值不大于256M。

query_cache_limit为单条查询结果的最大缓存大小,如不设置,默认为1M。

query_cache_type表示缓存方式,0表示不开启缓存,1表示每条语句都开启缓存(除非指定不需要缓存),2表示如果查询语句中指定使用缓存,则进行缓存。具体如下所示:

SELECT SQL_CACHE ... FROM ... WHERE ... 在type设置为2时,采用该语句可以进行缓存。

SELECT SQL_NO_CACHE ... FROM ... WHERE ... 在type设置为1时,采用该语句可以不进行缓存。

对于一些变化频率较低的表的查询中,开启缓存可以对性能起到一定提升作用。

二、垂直分库

数据库垂直拆分,是指按照业务对数据库表进行分类,将相关的表放到同一个数据库上。例如在一个网上商城系统中,可以将用户相关表、订单相关表、物流信息相关表各自独立放在自己的库上。这样可以使业务逻辑更为清晰,也使得数据库易维护、易扩展。但是可能引起一些跨库事务的问题。而且部分表关系原本可以通过联合查询来实现,垂直分库后只能通过服务间相互调用来完成。

三、水平分库

通常来讲应先进行垂直拆分,当垂直拆分之后性能瓶颈依然存在的话,可以考虑继续进行水平拆分。水平拆分可以根据具体的业务类型来拆分,例如可以对用户注册时间进行拆分,每一年注册的用户放在不同的表里,或者是对用户的区域进行拆分,不同地区的用户放在不同的表里,等等。

这种拆分的好处在于,可以保证单个库的容量可控,每条记录都是完整的,数据关系可以通过Join联合查询。

其缺点在于,拆分规则需要编码到程序里,增加了系统维护的难度,以及不同业务的分区交互需要统筹设计。

四、读写分离

所谓读写分离,就是将数据库分为主从库,主库用于写数据,而多个从库则用来读取数据。通常来讲,写数据库的操作要远远少于读数据库,所以在实践中,往往用于读取数据的从库数量要远大于主库。

以MySql为例,需要在my.cnf中进行配置。具体方法如下:

在主数据库中:

server-id=1 //设置mysql的id标识

log-bin=/var/lib/mysql/mysql-bin //log-bin的日志文件,主从备份就是用这个日志记录来实现的

#binlog-do-db=mysql1 #需要备份的数据库名,如果备份多个数据库,重复设置这个选项 即可

#binlog-ignore-db=mysql2 #不需要备份的数据库名,如果备份多个数据库,重复设置这 个选项即可

#log-slave-updates=1 #这个参数当从库又作为其他从库的主库时一定要加上,否则不会给更新的记录写到binglog里二进制文件里

#slave-skip-errors=1 #是跳过错误,继续执行复制操作(可选)

在主mysql中增加用来同步的账号,并赋予同步权限,以用户名为resp为例:

CREATE USER 'resp'@'%' IDENTIFIED BY 'password';

GRANT REPLICATION SLAVE ON *.* TO 'resp'@'%';

配置之后重启msql

mysql>show master status; //可以查看主mysql状态

在从数据库中

server-id=2

#log-bin=/var/lib/mysql/mysql-bi //从mysql可以不用设置日志文件

在从mysql中增加命令参数,master_log_file 和master_log_pos 可以在master mysql中用 show master status查询到。

开发时,实现读写分离有两种方式,一种是在应用程序层面实现,即在应用程序中指定读取数据的数据库和写入数据的数据库。另一种是采用专门的中间件,例如Mycat、Cobar、Oneproxy、Atlas、Kingshared等。

程序员应知应会之高并发情况下的数据库性能优化

拓展知识: