1 | <?php |
1 | <?php |
在使用mysql数据库时,如果是商城那就要考虑到秒杀、抢购、发消息等同一时间访问数据库所带来的堵塞从而压垮数据库。 如何有效的在程序和mysql是做些处理来应对呢。
答案就是:把http请求放入内存的高速队列,然后对队列里的数据按一定的规则进行分流处理。 当一个用户发送一个请求时,我们可以给他延迟2s,依次类推。
如果是发送通知类消息,用户量大,不可能同时发送,那么就是需要列队发送;把发送的消息操作延迟,同时针对活跃用户 优先发送(即异步操作),合理分摊服务器负担。
异步操作优点:部署简单,使用mysql内置存储过程和定时器即可完成大部分调度,服务器部署简单,容易迁移。
缺点:对于大数据量、上千万的消息处理效果不佳。不能应对实时性要求很高的场所。 关于htpp队列,金山有个内部开源HTTPSQL,把队列从mysql移到内存数据库中,并有一个专门的进程负责队列的操作,客户端则通过socket请求进行读写。 另外还有一个轻量级的基于内存的消息队列ZeroMQ,此队列是通过API来实现消息的传输。
mysql本身是存在瓶颈的,当数据量达到千万级别以上,无论mysql如何优化,其性能都显著降低(有专门团队开发并改进mysql的除外)。 那么就有以下几种办法解决。
1.增加mysql配置中buffer和cache的数值,增加服务器cpu数量和内存大小。
2.使用第三方引擎或衍生版本。例如:Percona、MariaDB、TokuDB 3.迁移到其他数据库。例如:PostgreSQL、Oracle
针对不同的业务需求来选择mysql存储引擎。 1.采用MyISAM引擎
2.采用InnoDB引擎
前辈们总结的经验,学习、学习。
1.尽量避免在列上进行运算,这样会导致索引失效。
例如:SELECT FROM t WHERE YEAR(d) >=2011; 优化为:SELECT FROM t WHERE d >=’2011-01-01’;
2.使用JOIN时,应该用小结果集驱动大结果集。
同时把复杂的JOIN查询拆分成多个QUERY。因为JOIN多个 表时,可能导致更多的锁定和堵塞。 SELECT * FROM a JOIN b ON a.id=b.id LEFT JOIN c ON c.time=a.date LEFT JOIN d ON c.pid=d.aid LEFT JOIN e ON e.cid=a.did
无意间发现shodan可以搜索任何联网的设备(不多解释,你懂的)。在kali系统中可以配置shodan,也就是说你不用去 https://www.shodan.io/官网上搜索了,在kali终端直接敲命令就可以了。 首先,在shodan注册个免费账户 NO.1 
突然发现centos自带的火狐浏览器好卡,打开网页速度太慢了。就尝试装个谷歌浏览器,结果报错。
如下: http://dl.google.com/linux/rpm/stable/x86\_64/repodata/repomd.xml: [Errno 14] curl#7 - “Failed to connect to 2404:6800:4005:800::200e: 网络不可达” 反反复复换了几个地方都不行(网址被封了),干脆把镜像源换了。
CentOS 7下安装最新的Wine(wine1.7.33)可谓一波三折,对于我这种菜鸟级别的人来说,真不好装!不过好在终于能够使用了。
下面记录安装过程:以后有时间在详细叙说安装的各个步骤:
CentOS 7安装可以仿照:The right way to install Wine on CentOS 6 64bit 里面给出了详细步骤,下面就是仿照其安装的!
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true