PostgreSQL、Oracle/MySQL和SQL Server的MVCC实现原理方式
关系数据库管理系统使用MVCC(Multiversion Concurrency Control多版本并发控制)来避免写操作堵塞读操作的并发问题,MVCC也就是通过使用数据的多个版本保证并发读写不冲突的一种机制,不同的数据库有不同的实现,这也是数据库系统让人头疼的地方,关系数据库表面看上去很简单方便,使用标准的SQL语句操作让人很放心,但是随着系统规模增加,并发用户增加,数据库会出现性能降低的现象,这时我们可能需要从外部的微调进入到内部原理的深入研究,而每个数据库内部实现并发的原理都是不同的,如果我们拥有多个不同的数据库,那么需要不同的调校方法,这时作为生产系统的核心数据库开始变得不那么让[……]
PostgreSQL的全文检索插件zhparser的中文分词效果
PostgreSQL支持全文检索,其内置的缺省的分词解析器采用空格分词。因为中文的词语之间没有空格分割,所以这种方法并不适用于中文。要支持中文的全文检索需要额外的中文分词插件。网上查了下,可以给PG用的开源中文分词插件有两个:nlpbamboo和zhparser。但是nlpbamboo是托管在googlecode上的,而googlecode被封了,下载不方便。下面尝试采用zhparser进行中文的全文检索。
zhparser是基于Simple Chinese Word Segmentation(SCWS)中文分词库实现的一个PG扩展,作者是 amutu,源码URL为https://g[……]
Postgres-XL集群软件介绍及搭建
介绍Postgres-XL
Postgres-XL 全称为 Postgres eXtensible Lattice,是TransLattice公司及其收购数据库技术公司–StormDB的产品。Postgres-XL是一个横向扩展的开源数据库集群,具有足够的灵活性来处理不同的数据库任务。
Postgres-XL功能特性
开放源代码:(源协议使用宽松的“Mozilla Public License”许可,允许将开源代码与闭源代码混在一起使用。)
完全的ACID支持
可横向扩展的关系型数据库(RDBMS)
支持OLAP应用,采用MPP(Massively Parallel Processing[……]
解决MySQL Table ‘***’ is marked as crashed and should be repaired问题
昨天后端程序在读取数据库信息时候,日志报相关数据表不能读取和写入数据,进入 MySQL数据库发现 Table ‘./wordpress/wp_posts’ is marked as crashed and should be repaired 错误,因为qqtexas中有数据表被损坏了,所以读取不了数据:
方法一:
修复 MySQL 数据库数据表问题可以由 mysqlcheck 来解决,先用 mysqlcheck 查看一下:
然后添加 –auto-repair 参数自动修复,最好修复前备份一下数据库:
为了安全起见,以下两种方法不建议在生产环境中使用
#my[……]
Ubuntu 配置 L2TP 客户端
本文档主要介绍在Ubuntu server上通过shell如何创建L2TP连接,需要提前在服务器上建立好L2TP服务端,并为客户端提供连接的用户名+密码。
- 安装
xl2tpd
sudo apt-get install xl2tpd - 修改配置文件
/etc/xl2tpd/xl2tpd.conf,添加:
注意修改文件中属性
lns:即服务器域名或IP;
name:连接名称,自定义的字符串;
local ip:本地连接IP,在服务端设定供L2TP连接使用的IP段 (注意设置一个服务端供使用IP地址)
- 添加配置
pppopt播号文件/etc/ppp/options.l2tpd.cy[......]
React、Angular、Vue.js:三者完整的比较指南
谈到框架,这些天你的选择差不多。在本文中,我们希望能够更轻松地做出决定。
选择技术堆栈有时会变成一项繁琐的任务,因为您需要考虑每个因素,包括预算,时间,应用程序大小,最终用户,项目目标和资源。
无论您是初学者,开发人员,自由职业者还是项目架构师形成策略,明智地决定每个框架的优缺点都是明智的。因此,这篇文章不会帮助您选择最好的文章,因为该决定取决于项目的范围和框架是否适合您的需求。但是,这篇文章可以帮助您更好地理解每个框架以及趋势和见解。
让我们开始吧
根据谷歌的趋势,看一下React与Angular与Vue.js的比较。
如果我们考虑过去一年,Angular似乎是[……]
Nginx优化详解
一、一般来说nginx 配置文件中对优化比较有作用的为以下几项:
1. worker_processes 8;
nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8)。
2. worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一
个进程分配到多个cpu。
3.worker_rlimit_nofile 65535;[……]
SYN Flood模拟攻击
1. SYN Flood攻击原理
SYN Flood是DDos攻击的其中一种形式,其原理是:在TCP连接初始化的时候需要进行三次握手(见图1和图2),攻击者在第一次握手的数据表里面,通过伪造”Source Address”(见图3),让服务器(接收端)在进行第二次握手的时候,将确认包发向一个伪造的IP地址,由于IP地址是伪造的,因此服务器端迟迟等不到第三次的确认包,导致服务器打开了大量的SYNC_RECV半连接。
图1,引自:https://tools.ietf.org/html/rfc793#section-3.4
图2
图3
其中图3中的Flags[……]
数据库连接池到底应该设多大?这篇文章可能会颠覆你的认知
本文内容95%译自这篇文章:https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
我在研究HikariCP(一个数据库连接池)时无意间在HikariCP的Github wiki上看到了一篇文章(即前面给出的链接),这篇文章有力地消除了我一直以来的疑虑,看完之后感觉神清气爽。故在此做译文分享。
接下来是正文
数据库连接池的配置是开发者们常常搞出坑的地方,在配置数据库连接池时,有几个可以说是和直觉背道而驰的原则需要明确。
1万并发用户访问
想象你有一个网站,压力虽然还没到Facebook那[……]