FreshRSS

🔒
❌ About FreshRSS
There are new articles available, click to refresh the page.
Before yesterday陈浩的个人博客

NVMe SSD中namespace的介绍和创建

April 12th 2020 at 13:35

什么是namespace

在NVMe技术中,namespace是主机软件可访问的逻辑块地址(LBA)的集合。namespace ID(NSID)是控制器对namespace访问的标识符。namespace不是块的物理隔离,而是主机软件可寻址的逻辑块的隔离。

在Linux中,每一个namespace在设备中都以唯一的标识符出现。如 /dev/nvme0n1表示controller 0的namespace 1。

主机软件将NVMe SSD分解为多个namespace的原因有很多:用于逻辑隔离,多租户,安全隔离(每个namespace单独加密),对某些namespace进行写保护,利用overprovisioning以提高写入性能和耐久性等。

默认情况下,在NVMe SSD上,namespace的大小等于制造商确定的LBA的大小。 每个namespace在主机软件中均作为单独的目标设备显示。

Namespace Size (NSZE):namespace包含的逻辑块的个数(从LBA 0到LBA n-1

Namespace Capacity (NCAP):在任何时间点可以分配的最大逻辑块数

Namespace Utilization (NUSE) :当前在名称空间中分配的逻辑块数

由于thin provisioning的缘故,size和capacity可以是不一样的。

namespace的操作

查看所有namespace: nvme list

查看某个namespace: nvme id-ns /dev/nvme0n1

创建新的namespace

(1)从controller上分离所有namespace:nvme detach-ns /dev/nvme0 –-namespace-id=1 –-controllers=0

(2)删除分离掉的namespace: nvme delete-ns /dev/nvme0 –-namespace-id=1

(3)创建新的namespace: nvme create-ns /dev/nvme0 –s 11995709440 –c 1199570940 –f 0 –d 0 -m 0

nvme create-ns的用法:

Options:
[ –nsze=, -s ] — size of ns
[ –ncap=, -c ] — capacity of ns
[ –flbas=, -f ] — FLBA size
[ –dps=, -d ] — data protection capabilities
[ –nmic=, -m ] — multipath and sharing capabilities
[ –block-size=, -b ] — target block size
[ –timeout=, -t ] — timeout value, in milliseconds

size和capacity的单位都是逻辑块的大小。

(4)绑定新的namespace到controller: nvme attach-ns /dev/nvme0 –-namespace-id=1 –-controllers=0

(5)重置controller使更改可见: nvme reset /dev/nvme0

(6)查看:nvme list

原文:https://nvmexpress.org/resources/nvm-express-technology-features/nvme-namespaces/

温哥华 Cypress Mountain 滑雪

February 1st 2020 at 03:55

1. 购票

官网就可以直接买到票。 https://cypressmountain.ltibooking.com/

票分很多种,有团队票,单次的票,多次票, 还可以同时选择租用设备。

下面选择 tickets+ rentals 为例。

左边选择票的种类,右边可以选择全天票或者下午票。下午票的时间可以参考官网介绍,不同季节不一样。

这里的 rentals 包含 skis 或者 snowboard (到的时候可以二选一), boots 和 poles.

如果想要头盔需要在付钱的时候额外添加。

不包含手套,手套租不了,可以到那里再买。

衣服的话可以到了再租大概 30 CAD.

交通

开车的话直接导航过去就好了。

如果坐公共交通的话,官方有大巴车可以上山。

如果坐大巴的话,官网 http://cypresscoachlines.com/ 有大巴的时刻表和上车地点。

大巴车票可以上车的时候找司机买票,每人 25 CAD , 往返,保存好车票,回来可用。

Check In

到了之后需要先在线填一个表格。check in 的大厅有很多电脑可以用来填,也可以提前在家在他们的官网上填好,主要是提供一些个人信息以及确认一些条款,最后需要签名。

完了之后,再去前台 check in, check in 完会给一个门票,如果订单租了东西,会给几个领东西的小票,然后拿着小票就可以去领东西了。租用东西需要押金,现金或者信用卡都可以。

快速搭建 L2TP VPN 服务器

November 20th 2019 at 18:35

利用云服务器搭建 VPN

一. 下载

运行

1
wget https://git.io/vpnsetup-centos -O vpnsetup.sh && sudo sh vpnsetup.sh

结束后会生成

Server IP: *
IPsec PSK: *
Username: *
Password: *

直接用这个信息就可以登陆了,就是这么简单粗暴。

运行完成后,会在当前目录下生成 vpnsetup.sh。 你也可以在该文件内设置以上信息,这样生成的就不是随机的了。

启用 ipsec 服务以在启动时启动:sudo systemctl enable ipsec

IPsec PSK 存在 /etc/ipsec.secrets 中,所有 VPN 用户共享相同的 IPsec PSK,可以通过更改行来设置新的。

二. 管理用户

下载脚本:

1
2
3
wget -O add_vpn_user.sh https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/add_vpn_user.sh

wget -O del_vpn_user.sh https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/del_vpn_user.sh

添加用户:

1
sudo sh add_vpn_user.sh 'username' 'password'

删除用户:

1
sudo sh del_vpn_user.sh 'username'

SPDK 介绍(一):使用 FIO 测试 SPDK

October 23rd 2019 at 09:35

Storage Performance Development Kit (SPDK)提供了一组用于编写高性能、可伸缩、用户态存储应用程序的工具和库。

一. 安装 FIO

下载 FIO 源码到 fio_dir 目录下, git clone https://github.com/axboe/fio, fio_dir 在这里只是举例,可以是其他目录.

1
2
3
4
cd fio && git checkout fio-3.3
./configure
make
make install

推荐使用 fio-3.3,最后也可以不 make install

二. 安装 SPDK

下载 spdk 到 spdk_dir 目录下(spdk_dir 在这里只是举例,可以是其他目录)。

1
2
3
git clone https://github.com/spdk/spdk
cd spdk
git submodule update --init

修改 spdk/CONFIG 文件中的 CONFIG_FIO_PLUGIN= 为 FIO 的路径。
编译:

1
2
3
4
cd spdk
./configure --with-fio=fio_dir/fio
make
make install

--with-fio= 后面添加 fio 的目录。configure 后面可以再加其他配置,比如 --with-shared 会编译生成总的 libspdk.so 链接库,否则只会生成许多单个的链接库。
make install 会把 spdk 安装到某个路径。比如 /usr/local/lib 之类的。可以自行查看,必须确保该路径在动态链接库的默认搜索路径中。可以自己设置链接库的搜索路径。

三. 利用 FIO 测试 SPDK

修改测试用例 spdk/examples/nvme/fio_plugin/fio_plugin/example_config.fio, 添加 filename, 如

filename=trtype=PCIe traddr=0000.04.00.0 ns=1 或者 filename=trtype=RDMA adrfam=IPv4 traddr=192.168.100.8 trsvcid=4420 ns=1

traddr=0000.04.00.0 的地址可以通过 lspci | grep SSD 查看

测试:

1
LD_PRELOAD=spdk_dir/spdk/examples/nvme/fio_plugin/fio_plugin fio_dir/fio/fio example_config.fio


Reference

https://github.com/spdk/spdk/tree/master/examples/nvme/fio_plugin

https://github.com/spdk/spdk/issues/367

https://www.jianshu.com/p/eeaf81ffb7b5

https://github.com/spdk/spdk/issues/29

RocksDB 介绍(一):相关博客

October 22nd 2019 at 09:35

一. 写操作

(1) RocksDB 写入流程详解
https://zhuanlan.zhihu.com/p/33389807

(2) RocksDB——Put
https://www.jianshu.com/p/daa18eebf6e1

(3) RocksDB写入数据过程DBImpl::Write()源代码分析
https://blog.csdn.net/wang_xijue/article/details/46521605

(4) 并发写-RocksDB源码剖析(3)
http://www.pandademo.com/2016/10/parallel-write-rocksdb-source-dissect-3/

(5) Rocksdb的Put()
http://www.leviathan.vip/2018/02/27/Rocksdb%E7%9A%84Put/

(6) Rocksdb 代码学习 写流程2 (memtable写)
https://blog.csdn.net/u014361034/article/details/62217744

(7) Rocksdb的Memtable
http://www.leviathan.vip/2018/02/06/Rocksdb%E7%9A%84memtable/

二. WAL

(1) RocksDB · WAL(WriteAheadLog)介绍
http://mysql.taobao.org/monthly/2018/04/09/

(2)【Rocksdb实现及优化分析】 JoinBatchGroup
http://kernelmaker.github.io/Rocksdb_Study_1

三. 读操作

(1) RocksDB · 数据的读取(一)
http://mysql.taobao.org/monthly/2018/11/05/

(2) RocksDB · 数据的读取(二)
http://mysql.taobao.org/monthly/2018/12/08/

四. 其他

(1) 【RocksDB实现分析及优化】TransactionDB
https://kernelmaker.github.io/transactiondb-intro

(2) 【Rocksdb实现分析及优化】enable_pipelined_write
https://kernelmaker.github.io/Rocksdb_pipeline_write

(3) rocksdb源码解析:log文件恢复
https://blog.csdn.net/dongfengxueli/article/details/66975838

五. C++ 相关

(1) 理解 C++ 的 Memory Order
http://senlinzhan.github.io/2017/12/04/cpp-memory-order/

六. Transaction 相关

(1) TransactionDB源码分析
https://yq.aliyun.com/articles/609664

(2) WritePrepared Transactions
https://github.com/facebook/rocksdb/wiki/WritePrepared-Transactions

(3) WriteUnprepared Transactions
https://github.com/facebook/rocksdb/wiki/WriteUnprepared-Transactions

(4) Two Phase Commit
https://github.com/facebook/rocksdb/wiki/Two-Phase-Commit-Implementation

(5) TransactionDB介绍
https://zhuanlan.zhihu.com/p/39427559

Linux IO 相关资料

September 29th 2019 at 18:35

(1) xfs文件系统磁盘布局
http://www.lenky.info/archives/tag/xfs/page/2

(2) Linux fsync和fdatasync系统调用实现分析(Ext4文件系统)
https://blog.csdn.net/luckyapple1028/article/details/61413724

(3) 文件IO系统调用内幕
https://lrita.github.io/2019/03/13/the-internal-of-file-syscall/

(4) 深入理解Fsync
https://www.cnblogs.com/hustcat/p/3283955.html

(5) Linux Direct IO机制分析
http://oenhan.com/ext3-fs-directio

(6) Linux 内核写文件流程
http://oenhan.com/linux-kernel-write

(7) Linux内核三驾马车之-IO管理
https://blog.acean.vip/post/linux-kernel/gai-shu-linuxnei-he-san-jia-ma-che-zhi-ioguan-li#toc_29

(8) 全链路分析数据落盘机制-文件系统层及块设备层
http://blog.zw1m.com/tags/IO/

(9) Linux 中直接 I/O 机制的介绍
https://www.ibm.com/developerworks/cn/linux/l-cn-directio/

(10) direct IO中io合并的奇怪现象分析
http://www.sysnote.org/2014/05/19/directio-merge/

(11) Linux 缓存写回机制
http://oenhan.com/linux-cache-writeback

(12) 使用 FUSE 开发自己的文件系统
https://www.ibm.com/developerworks/cn/linux/l-fuse/index.html

(13) Linux 内核的文件 Cache 管理机制介绍
https://www.ibm.com/developerworks/cn/linux/l-cache/index.html

(14) Linux Block Driver
http://oliveryang.net/2016/04/linux-block-driver-basic-1/
http://oliveryang.net/2016/04/linux-block-driver-basic-2/
http://oliveryang.net/2016/04/linux-block-driver-basic-3/
http://oliveryang.net/2016/04/linux-block-driver-basic-4/
http://oliveryang.net/2016/10/linux-block-driver-basic-5/
http://oliveryang.net/2016/10/linux-block-driver-basic-6/
http://oliveryang.net/2016/10/linux-block-driver-basic-7/

(15) Linux File System
http://oliveryang.net/2016/05/linux-file-system-basic-1/
http://oliveryang.net/2016/05/linux-file-system-basic-2/
http://oliveryang.net/2016/05/linux-file-system-basic-3/
http://oliveryang.net/2016/05/linux-file-system-basic-4/
http://oliveryang.net/2016/05/linux-file-system-basic-5/

(16) 没有什么好神秘的: wait_on_page_bit
https://www.cnblogs.com/honpey/p/4931962.html

(17) Linux通用块设备层
http://www.ilinuxkernel.com/files/Linux.Generic.Block.Layer.pdf

Cassandra 介绍(三):Commitlog 介绍(1)

September 26th 2019 at 08:20

与 commitlog 相关的类如下:

1. CommitLog Service 线程后台 sync

AbstractCommitLogService 类中的 start() 函数新建 SyncRunnable 线程,并运行该线程。

该线程运行的函数是 run(), run() 中不停调用 sync(). sync() 利用 parkNanos() 周期性进行 sync 操作, 但这只对 group 和 periodical 的 commitlog 有效,对于 batch 的 commitlog 会在 BatchCommitLogService 类的 maybeWaitForSync() 函数中显示调用 unpark() 唤醒线程。

2. CommitLog 构建 CommitLog Service 和 CommitLog Manager

CommitLog 类中,利用 construct() 生成一个具体的 AbstractCommitLogService 类和一个 AbstractCommitLogSegmentManager 类。

executor 是一个具体的 AbstractCommitLogService 类, PeriodicCommitLogService, BatchCommitLogService 和 GroupCommitLogService 中的一个。

segmentManager 是一个具体的 AbstractCommitLogSegmentManager 类, CommitLogSegmentManagerCDC 和 CommitLogSegmentManagerStandard 中的一个。

最后 CommitLog 调用 start() 启动 segmentManager.start() 和 executor.start()

executor.start() 也就是调用 AbstractCommitLogService 的 start() 函数启动一个线程周期性执行 sync() 操作。

segmentManager.start() 也就是调用 AbstractCommitLogSegmentManager 的 start() 函数,启动一个后台线程分配 CommitLogSegment

3. 何时写 CommitLog

运行到 1341 行时的函数栈如下图所示。1341行新建了一个线程,在1347行时运行。

beginWrite() 中调用 CommitLog.instance.add(mutation) 写入 commitlog。

运行到 CommitLog.instance.add(mutation) 时的函数栈如下:

CommitLog.instance.add() 函数实现 commitlog 的提交

4. 等待 commitlog 持久化完成

上图中的 executor.finishWriteFor(alloc) 会调用 AbstractCommitLogService 的 finishWriteFor() , 从而调用相应子类的 maybeWaitForSync()。

BatchCommitLogService 中的 maybeWaitForSync() 函数会调用 requestExtraSync() 唤醒 sync 线程进行 sync。然后调用 awaitDiskSync() 等待 commitlog 持久化完成。

GroupCommitLogService 中的 maybeWaitForSync() 函数会调用 awaitDiskSync() 等待 commitlog 持久化完成, 依赖后台 sync 线程的周期性 sync 操作。

PeriodicCommitLogService中的 maybeWaitForSync() 函数, blockWhenSyncLagsNanos 是 periodic commitlog 的周期, expectedSyncTime = System.nanoTime() - blockWhenSyncLagsNanos,表示 expectedSyncTime 之前的 commitlog 应该要持久化完。 lastSyncedAt 表示上次持久化的时间。 调用 awaitSyncAt() 等待 expectedSyncTime 之前的 commitlong 持久化完。

Cassandra 介绍(一):Install and test with YCSB

September 19th 2019 at 08:20

1. install cassandra

https://blog.pythian.com/how-to-build-your-very-own-cassandra-4-0-release/

(1) Make sure you have your prerequisites

Java SDK 1.8 or Java 1.11 Open Source or Oracle
Ant 1.8
Git CLI client
Python >=2.7<3.0

(2) Download the GIT repository

1
git clone https://gitbox.apache.org/repos/asf/cassandra.git

(3) Build your new Cassandra release

1
2
cd cassandra
ant

(4) Run Cassandra

1
2
cd ./bin
./cassandra

(5) Have fun

1
2
./nodetool status
./cqlsh

(6) Some problems you may encounter:
(6.1) package org.apache.tools.ant.taskdefs.optional.junit does not exist

Solution: sudo yum install ant-junit

2. cpp driver:

https://docs.datastax.com/en/developer/cpp-driver/2.13/topics/building/

3. ycsb

(1) install (https://github.com/brianfrankcooper/YCSB)

YCSB requires the use of Maven 3.

1
2
3
git clone https://github.com/brianfrankcooper/YCSB.git
# mvn -pl com.yahoo.ycsb:cassandra-binding -am clean package
mvn -pl cassandra -am clean package

(2) test

https://github.com/brianfrankcooper/YCSB/tree/master/cassandra
https://blog.csdn.net/hs794502825/article/details/17334915

for cassandra:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 ./cqlsh
cqlsh> create keyspace ycsb WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor': 1 };
cqlsh> USE ycsb;
cqlsh> create table usertable (
y_id varchar primary key,
field0 varchar,
field1 varchar,
field2 varchar,
field3 varchar,
field4 varchar,
field5 varchar,
field6 varchar,
field7 varchar,
field8 varchar,
field9 varchar);

for ycsb:

1
./bin/ycsb load cassandra-cql -P workloads/workloada -p hosts=localhost

4. Open cassandra in IDEA

https://blog.csdn.net/qiaojialin/article/details/73558971

(1) Download

1
git clone https://gitbox.apache.org/repos/asf/cassandra.git

(2) Generate idea files

1
2
cd cassandra
ant generate-idea-files

(3) Open in IDEA

Main class:

1
org.apache.cassandra.service.CassandraDaemon

VM options:

1
2
3
4
5
6
7
8
9
10
11
12
13
-Dcassandra-foreground=yes 
-Dcassandra.config=file://$PROJECT_DIR$/conf/cassandra.yaml
-Dcassandra.storagedir=$PROJECT_DIR$/data
-Dlogback.configurationFile=file://$PROJECT_DIR$/conf/logback.xml
-Dcassandra.logdir=$PROJECT_DIR$/data/logs
-Djava.library.path=$PROJECT_DIR$/lib/sigar-bin
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=7199
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-ea
-Xmx1G

Use classpath of module: cassandra

阿里数据库内核月报(汇总)

September 3rd 2019 at 08:20

阿里数据库内核月报(汇总)

2021/04

2021/04/01 MySQL · 内核特性 · Automatic connection failover
2021/04/02 MongoDB · 内核特性 · 一致性模型设计与实现
2021/04/03 MySQL · 资源管理 · PFS内存管理分析
2021/04/04 MySQL · HTAP · 分析型执行引擎
2021/04/05 MySQL · 内核分析 · InnoDB主键约束和唯一约束的实现分析
2021/04/06 MySQL · 源码阅读 · Window function解析

2021/03

2021/03/01 MySQL · 引擎特性 · InnoDB Faster truncate/drop table space
2021/03/02 MySQL · 源码阅读 · Decimal 的实现方法
2021/03/03 PolarDB · 最佳实践 · 并行查询优化器的应用实践
2021/03/04 PolarDB · 引擎特性 · 物理复制热点页优化
2021/03/05 DataBase · 引擎特性 · OLAP/HTAP列式存储引擎概述
2021/03/06 MySQL · 源码阅读 · 白话Online DDL

2021/02

2021/02/01 PolarDB · 特性分析 · Explain Format Tree 详解
2021/02/02 MySQL · 源码阅读 · InnoDB Export/Import Tablespace解析
2021/02/03 MySQL · 源码解析 · MySQL 8.0.23 Hypergraph Join Optimizer代码详解
2021/02/04 MySQL · 性能优化 · InnoDB 事务 sharded 锁系统优化
2021/02/05 DataBase · 社区动态 · 数据库中的表达式
2021/02/06 MySQL · 源码分析 · Group by优化逻辑代码分析
2021/02/07 MySQL · 源码阅读 · X-plugin的传输协议
2021/02/08 MySQL · 源码阅读 · MySQL8.0 innodb锁相关
2021/02/09 PolarDB · 优化改进 · 使用窗口聚合函数来将子查询解关联

2021/01

2021/01/01 PolarDB · 源码解析 · 深度解析PolarDB的并行查询引擎
2021/01/02 MySQL · 源码阅读 · 内部XA事务
2021/01/03 PolarDB · 优化改进 · DDL的优化和演进
2021/01/04 Database · 最佳实践 · 内存索引指南
2021/01/05 Database · 最佳实践 · 高性能 Hash Join 算法实现简述
2021/01/06 MySQL · 源码阅读 · Innodb内存管理解析
2021/01/07 X-Engine · 引擎特性 · 并行DDL
2021/01/08 PostgreSQL · 新增特性 · PG 13 新特性

2020/12

2020/12/01 Database · 发展前沿 · NewSQL数据库概述
2020/12/02 AliSQL · 内核新特性 · 2020技术总结
2020/12/03 MySQL · 引擎特性 · page cleaner 算法
2020/12/04 PolarDB · 引擎特性 · 历史库
2020/12/05 MySQL · 内核特性 · 统计信息的现状和发展

2020/11

2020/11/01 MySQL · 源码分析 · MySQL Statement Digest
2020/11/02 Database · 理论基础 · B-tree 物理结构的并发控制
2020/11/03 MySQL · 源码阅读 · 创建二级索引
2020/11/04 MySQL · 源码阅读 · Secondary Engine

2020/10

2020/10/01 MySQL · 源码分析 · 子查询优化源码分析
2020/10/02 MySQL · 源码分析 · undo tablespace 的发展
2020/10/03 MySQL · 最佳实践 · How to read the lock information from debugger

2020/09

2020/09/01 MySQL · 性能优化 · PageCache优化管理
2020/09/02 MySQL · 分布式系统 · 一致性协议under the hood
2020/09/03 X-Engine · 性能优化 · Parallel WAL Recovery for X-Engine
2020/09/04 MySQL · 源码阅读 · InnoDB伙伴内存分配系统实现分析
2020/09/05 PgSQL · 新特性探索 · 浅谈postgresql分区表实现并发创建索引
2020/09/06 MySQL · 引擎特性 · InnoDB隐式锁功能解析
2020/09/07 MySQL · Optimizer · Optimizer Hints
2020/09/08 Database · 新特性 · 映射队列

2020/08

2020/08/01 MySQL · 引擎特性 · truncate table在大buffer pool下的优化
2020/08/02 MySQL · 引擎特性 · INNODB UNDO LOG分配
2020/08/03 MySQL · 内核特性 · Redo Logging动态开关
2020/08/04 MySQL · 引擎特性 · InnoDB Buffer Page 生命周期
2020/08/05 MySQL · 引擎特性 · InnoDB UNDO LOG写入
2020/08/06 MySQL · 引擎特性 · InnoDB 数据文件简述
2020/08/07 Database · 案例分析 · UTF8与GBK数据库字符集

2020/07

2020/07/01 MySQL · 内核特性 · 8.0 新的火山模型执行器
2020/07/02 MongoDB · 内核特性 · wiredtiger page逐出
2020/07/03 AliSQL · 内核特性 · 快速 DDL
2020/07/04 MySQL · 内核特性 · semi-join四个执行strategy
2020/07/05 MySQL · 引擎特性 · InnoDB redo log thread cpu usage
2020/07/06 PgSQL · 引擎特性 · SQL防火墙使用说明与内核浅析

2020/06

2020/06/01 AliSQL · 内核特性 · Binlog In Redo
2020/06/02 MySQL · 内核特性 · InnoDB btree latch 优化历程
2020/06/03 MySQL · 内核特性 · Attachable transaction
2020/06/04 MySQL · 内核特性 · Link buf
2020/06/05 PgSQL · 新版本调研 · 13 Beta 1 初体验

2020/05

2020/05/01 Database · 技术方向 · 下一代云原生数据库详解
2020/05/02 Database · 理论基础 · 高性能B-tree索引
2020/05/03 Database · 理论基础 · ARIES/IM (一)
2020/05/04 AliSQL · 引擎特性 · Fast Query Cache 介绍
2020/05/05 MySQL · 源码分析 · 8.0 · DDL的那些事
2020/05/06 MySQL · 内核分析 · InnoDB Buffer Pool 并发控制
2020/05/07 MySQL · 源码分析 · 内部 XA 和组提交
2020/05/08 MySQL · 插件分析 · Connection Control
2020/05/09 MySQL · 引擎特性 · 基于GTID复制实现的工作原理

2020/04

2020/04/01 PostgreSQL · 源码分析 · 回放分析(一)
2020/04/02 MySQL · 源码分析 · InnoDB读写锁实现分析
2020/04/03 MySQL · 最佳实践 · X-Engine并行扫描
2020/04/04 MySQL · 引擎特性 · 8.0 Window Functions 剖析
2020/04/05 MySQL · 引擎特性 · Performance_schema 内存分配
2020/04/06 MySQL · 引擎特性 · 手动分析InnoDB B+Tree结构
2020/04/07 Redis · 最佳实践 · 集群配置:Redis Cluster
2020/04/08 MongoDB · 引擎特性 · 大量集合启动加载优化原理
2020/04/09 MySQL · 引擎特性 · 8.0 Lock Manager

2020/03

2020/03/01 MySQL · 引擎特性 · 8.0 Instant Add Column功能解析
2020/03/02 PgSQL · 引擎特性 · PostgreSQL 通信协议
2020/03/03 MySQL · 产品特性 · RDS三节点企业版的高可用体系
2020/03/04 AliSQL · 最佳实践 · Performance Agent
2020/03/05 MySQL · 内核分析 · InnoDB mutex 实现分析
2020/03/06 Database · 理论基础 · B link Tree
2020/03/07 MySQL · 引擎特性 · Latch 持有分析
2020/03/08 MySQL · 内核分析 · InnoDB 的统计信息
2020/03/09 MySQL · 引擎特性 · 排序实现
2020/03/10 PgSQL · 插件分析 · plProfiler

2020/02

2020/02/01 MySQL · 引擎特性 · 庖丁解InnoDB之REDO LOG
2020/02/02 MySQL · 引擎特性 · InnoDB Buffer Pool 浅析
2020/02/03 MySQL · 最佳实践 · RDS 三节点企业版热点组提交
2020/02/04 MySQL · 引擎特性 · 8.0 heap table 介绍
2020/02/05 MySQL · 存储引擎 · MySQL的字段数据存储格式
2020/02/06 MySQL · 引擎特性 · MYSQL Binlog Cache详解

2020/01

2020/01/01 MySQL · 引擎特性 · 二级索引分析
2020/01/02 MySQL · 引擎特性 · X-Engine OnlineDDL
2020/01/03 MySQL · 捉虫动态 · 弱序内存模型导致的死锁问题
2020/01/04 MySQL · 最佳实践 · 8.0 redo log写入性能问题分析
2020/01/05 MySQL · 引擎特性 · InnoDB redo log 之 write ahead
2020/01/06 MySQL · 引擎特性 · Innodb WAL物理格式

2019/12

2019/12/01 MySQL · 引擎特性 · 动态元信息持久化
2019/12/02 MySQL · 引擎特性 · Binlog encryption 浅析
2019/12/03 MySQL · 代码阅读 · MYSQL开源软件源码阅读小技巧
2019/12/04 MySQL · 引擎特性 · 多线程调试工具DEBUG_SYNC的源码实现和使用
2019/12/05 MySQL · 引擎特性 · InnoDB Parallel read of index

2019/11

2019/11/01 MySQL · 最佳实践 · 今天你并行了吗?—洞察PolarDB 8.0之并行查询
2019/11/02 MySQL · 新特征 · MySQL 哈希连接实现介绍
2019/11/03 MySQL · 最佳实践 · 性能分析的大杀器—Optimizer trace
2019/11/04 PgSQL · 未来特性调研 · TDE
2019/11/05 Database · 理论基础 · Multi-ART
2019/11/06 MySQL · 引擎特性 · RDS三节点企业版 一致性协议
2019/11/07 MySQL · 引擎特性 · RDS三节点企业版 Learner 只读实例

2019/10

2019/10/01 MySQL · 引擎特性 · Innodb 表空间
2019/10/02 MySQL · 引擎特性 · POLARDB 并行查询加速全程详解
2019/10/03 MySQL · Optimizer · Parallel Index Scans, One is Better Than Two
2019/10/04 MySQL · 最佳实践 · X-Engine MySQL RDS 用户的新选择
2019/10/05 MySQL · 引擎特性 · Sequence Engine
2019/10/06 PgSQL · 应用案例 · 分组提交的使用与注意
2019/10/07 MongoDB · 最佳实践 · Spark Connector 实战指南
2019/10/08 PgSQL · 应用案例 · PG 12 tpcc - use sysbench-tpcc by Percona-Lab
2019/10/09 PgSQL · 应用案例 · 阿里云RDS PG 11开放dblink, postgres_fdw权限
2019/10/10 PgSQL · 应用案例 · Oracle 20c 新特性 - 翻出了PG十年前的特性

2019/09

2019/09/01 MySQL · 引擎特性 · 临时表改进
2019/09/02 MySQL · 引擎特性 · 初探 Clone Plugin
2019/09/03 MySQL · 引擎特性 · 网络模块优化
2019/09/04 MySQL · 引擎特性 · Multi-Valued Indexes 简述
2019/09/05 AliSQL · 引擎特性 · Statement Queue
2019/09/06 Database · 理论基础 · Palm Tree
2019/09/07 AliSQL · 引擎特性 · Returning
2019/09/08 PgSQL · 最佳实践 · 回归测试探寻
2019/09/09 MongoDB · 最佳实践 · 哈希分片为什么分布不均匀
2019/09/10 PgSQL · 应用案例 · PG有standby的情况下为什么停库可能变慢?

2019/08

2019/08/01 PgSQL· 引擎特性 · 多版本并发控制介绍及实例分析
2019/08/02 AliSQL · 引擎特性 · Recycle Bin
2019/08/03 MySQL · 引擎特性 · 8.0 Innodb redo log record 源码分析
2019/08/04 Database · 内存管理 · JeMalloc-5.1.0 实现分析
2019/08/05 MySQL · 引擎特性 · clone_plugin
2019/08/06 MSSQL · 最佳实践 · 启用即时文件初始化
2019/08/07 PgSQL · 特性分析 · 浅析PostgreSQL 的JIT
2019/08/08 MySQL · 引擎特性 · ROLLUP 功能用法和实现
2019/08/09 Redis · 最佳实践 · 混合存储实践指南
2019/08/10 PgSQL · 应用案例 · pgbench client_id 变量用途

2019/07

2019/07/01 MySQL · 最佳实践 · Statement Outline
2019/07/02 PgSQL · 新特性解读 · undo log 存储接口(上)
2019/07/03 MySQL · 引擎特性 · Buffer Pool 漫谈
2019/07/04 MongoDB · 引擎特性 · oplog 查询优化
2019/07/05 PgSQL · 最佳实践 · pg_cron 内核分析及用法简介
2019/07/06 MySQL · 引擎特性 · CTE(Common Table Expressions)
2019/07/07 Database · 理论基础 · Mass Tree
2019/07/08 MySQL · 源码分析 · slow logCSV引擎
2019/07/09 PgSQL · 应用案例 · 使用SQL查询数据库日志
2019/07/10 PgSQL · 应用案例 · PostgreSQL psql的元素周期表

2019/06

2019/06/01 MySQL · 引擎特性 · 安全及权限改进相关
2019/06/02 MySQL · 最佳实践 · RDS MySQL 8.0 语句级并发控制
2019/06/03 CloudDBA · 最佳实践 · Performance Insights
2019/06/04 PgSQL · 应用案例 · 学生为什么应该学PG
2019/06/05 MongoDB · 引擎特性 · 4.2 新特性解读
2019/06/06 PgSQL · 答疑解惑 · 垃圾回收、膨胀、多版本管理、存储引擎
2019/06/07 MySQL · 引擎特性 · 说说InnoDB Log System的隐藏参数
2019/06/08 MySQL · 引擎特性 · CHECK CONSTRAINT
2019/06/09 PgSQL · 应用案例 · 如何修改PostgreSQL分区表分区范围
2019/06/10 PgSQL · 应用案例 · 什么情况下可能表膨胀

2019/05

2019/05/01 MSSQL · 最佳实践 · 挑战云计算安全的存储过程
2019/05/02 MySQL · 源码分析 · 聚合函数(Aggregate Function)的实现过程
2019/05/03 PgSQL · 最佳实践 · RDS for PostgreSQL 的逻辑订阅
2019/05/04 MySQL · 引擎特性 · 通过 SQL 管理 UNDO TABLESPACE
2019/05/05 MySQL · 最佳实践 · 通过Resource Group来控制线程计算资源
2019/05/06 MySQL · 引擎特性 · Skip Scan Range
2019/05/07 MongoDB · 应用案例 · killOp 案例详解
2019/05/08 MySQL · 源码分析 · LinkBuf设计与实现
2019/05/09 PgSQL · 应用案例 · PostgreSQL KPI分解,目标设定之 - 等比数列
2019/05/10 PgSQL · 应用案例 · PostgreSQL KPI 预测例子

2019/04

2019/04/01 MySQL · 引擎特性 · 临时表那些事儿
2019/04/02 MSSQL · 最佳实践 · 使用SSL加密连接
2019/04/03 Redis · 引擎特性 · radix tree 源码解析
2019/04/04 MySQL · 引擎分析 · InnoDB history list 无法降到0的原因
2019/04/05 MySQL · 关于undo表空间的一些新变化
2019/04/06 MySQL · 引擎特性 · 新的事务锁调度VATS简介
2019/04/07 MySQL · 引擎特性 · 增加系统文件追踪space ID和物理文件的映射
2019/04/08 PgSQL · 应用案例 · PostgreSQL 9种索引的原理和应用场景
2019/04/09 PgSQL · 应用案例 · 任意字段组合查询
2019/04/10 PgSQL · 应用案例 · PostgreSQL 并行计算

2019/03

2019/03/01 PgSQL · 特性分析 · 内存管理机制
2019/03/02 MongoDB · 同步工具 · MongoShake原理分析
2019/03/03 MySQL · InnoDB · Redo log
2019/03/04 MSSQL · 最佳实践 · Always Encrypted
2019/03/05 MySQL · 源码分析 · CHECK TABLE实现
2019/03/06 PgSQL · 原理介绍 · PostgreSQL中的空闲空间管理
2019/03/07 MySQL · 引擎特性 · 8.0 Descending Index
2019/03/08 理论基础 · Raft phd 论文中的pipeline 优化
2019/03/09 MySQL · 引擎特性 · MySQL 状态信息Status实现
2019/03/10 PgSQL · 应用案例 · 使用PostgreSQL生成数独方法1

2019/02

2019/02/01 POLARDB · 性能优化 · 敢问路在何方 — 论B+树索引的演进方向(中)
2019/02/02 MySQL · 引擎特性 · Inspecting the Content of a MySQL Histogram
2019/02/03 Database · 原理介绍 · Snapshot Isolation 综述
2019/02/04 MSSQL · 最佳实践 · 数据库备份加密
2019/02/05 MySQL · 引擎特性 · The design of mysql8.0 redolog
2019/02/06 MySQL · 源码分析 · 8.0 Functional index的实现过程
2019/02/07 PgSQL · 源码解析 · Json — 从使用到源码
2019/02/08 MySQL · 最佳实践 · 如何使用C++实现 MySQL 用户定义函数
2019/02/09 MySQL · 最佳实践 · MySQL多队列线程池优化
2019/02/10 PgSQL · 应用案例 · PostgreSQL 时间线修复

2019/01

2019/01/01 POLARDB · 理论基础 · 数据库故障恢复机制的前世今生
2019/01/02 POLARDB · 最佳实践 · POLARDB不得不知道的秘密(二)
2019/01/03 MongoDB · 原理介绍 · MongoDB从事务到复制
2019/01/04 PgSQL · 引擎特性 · PostgreSQL 并行查询概述
2019/01/05 MSSQL · 最佳实践 · 如何打码隐私数据列
2019/01/06 Redis · 引擎特性 · Lua脚本新姿势
2019/01/07 Mariadb · 源码分析 · proxy protocol
2019/01/08 MySQL · InnoDB · tablespace源码分析
2019/01/09 MySQL · 最佳实践 · MySQL中的IO共享操作
2019/01/10 PgSQL · 应用案例 · native partition 分区表性能优化

2018/12

2018/12/01 Database · 原理介绍 · 数据库的事务与复制
2018/12/02 PgSQL · 引擎特性 · PostgreSQL Hint Bits 简介
2018/12/03 MSSQL · 最佳实践 · 行级别安全解决方案
2018/12/04 MySQL · 原理介绍 · 再议MySQL的故障恢复
2018/12/05 POLARDB · 引擎特性 · 物理复制解读
2018/12/06 Redis · 原理介绍 · 利用管道优化aofrewrite
2018/12/07 PgSQL · 原理介绍 · PostgreSQL行锁实现
2018/12/08 MySQL · RocksDB · 数据的读取(二)
2018/12/09 PgSQL · 应用案例 · PG 11 并行计算算法,参数,强制并行度设置
2018/12/10 PgSQL · 应用案例 · PostgreSQL IoT,车联网 - 实时轨迹、行程实践

2018/11

2018/11/01 POLARDB · 理论基础 · 敢问路在何方 — 论B+树索引的演进方向(上)
2018/11/02 Database · 原理介绍 · Google Percolator 分布式事务实现原理解读
2018/11/03 Database · 原理介绍 · 关于Paxos 幽灵复现问题
2018/11/04 MySQL · 引擎特性 · InnoDB MVCC 相关实现
2018/11/05 MySQL · RocksDB · 数据的读取(一)
2018/11/06 PgSQL · 最佳实践 · EXPLAIN 使用浅析
2018/11/07 MSSQL · 最佳实践 · 列加密查询性能问题及解决方案
2018/11/08 MySQL · 最佳实践 · 性能问题多维度诊断
2018/11/09 MySQL · 最佳实践 · 8.0 CTE和窗口函数的用法
2018/11/10 PgSQL · 应用案例 · Heap Only Tuple (降低UPDATE引入的索引写IO放大)

2018/10

2018/10/01 POLARDB · 最佳实践 · POLARDB不得不知道的秘密
2018/10/02 MySQL · 引擎特性 · Cost Model,直方图及优化器开销优化
2018/10/03 MSSQL · 最佳实践 · 使用混合密钥实现列加密
2018/10/04 MongoDB · 引擎特性 · 复制集原理
2018/10/05 Redis · lazyfree · 大key删除的福音
2018/10/06 Database · 理论基础 · 数据库事务隔离发展历史
2018/10/07 Database · 理论基础 · 关于一致性协议和分布式锁
2018/10/08 MySQL · RocksDB · Level Compact 分析
2018/10/09 MySQL · RocksDB · TransactionDB 介绍
2018/10/10 PgSQL · 应用案例 · 相似人群圈选,人群扩选,向量相似 使用实践

2018/09

2018/09/01 MySQL · 引擎特性 · B+树并发控制机制的前世今生
2018/09/02 MySQL · 源码分析 · Innodb缓冲池刷脏的多线程实现
2018/09/03 MySQL · 引擎特性 · IO_CACHE 源码解析
2018/09/04 MySQL · RocksDB · Memtable flush分析
2018/09/05 MSSQL · 最佳实践 · 使用非对称秘钥实现列加密
2018/09/06 MongoDB · 引擎特性 · MongoDB索引原理
2018/09/07 MySQL · 案例分析 · RDS MySQL线上实例insert慢常见原因分析
2018/09/08 Redis · 引擎特性 · 基于 LFU 的热点 key 发现机制
2018/09/09 MySQL · myrocks · collation 限制
2018/09/10 PgSQL · 应用案例 · PostgreSQL 图像搜索实践

2018/08

2018/08/01 MySQL · 引擎特性 · 主库 binlog 概览
2018/08/02 MySQL · RocksDB · Write Prepared Policy
2018/08/03 MSSQL · 最佳实践 · 使用对称秘钥实现列加密
2018/08/04 MySQL · 特性分析 · InnoDB对binlog_format的限制
2018/08/05 MongoDB · 引擎特性 · sharding chunk 分裂与迁移详解
2018/08/06 PgSQL · 源码分析 · PostgreSQL物理备份内部原理
2018/08/07 MySQL · 源码分析 · 连接与认证过程
2018/08/08 MySQL · RocksDB · MemTable的写入逻辑
2018/08/09 PgSQL · 最佳实践 · Greenplum RoaringBitmap多阶段聚合
2018/08/10 PgSQL · 应用案例 · 高并发空间位置更新、多属性KNN搜索并测

2018/07

2018/07/01 MySQL · 引擎特性 · WAL那些事儿
2018/07/02 MySQL · 源码分析 · 8.0 原子DDL的实现过程续
2018/07/03 MongoDB · 引擎特性 · 事务实现解析
2018/07/04 MySQL · RocksDB · 写入逻辑的实现
2018/07/05 MySQL · 源码分析 · binlog crash recovery
2018/07/06 PgSQL · 新特征 · PG11并行Hash Join介绍
2018/07/07 MySQL · myrocks · clustered index特性
2018/07/08 MSSQL · 最佳实践 · 实例级别数据库上云RDS SQL Server
2018/07/09 MySQL · 最佳实践 · 一个TPC-C测试工具sqlbench使用
2018/07/10 PgSQL · 应用案例 · PostgreSQL flashback(闪回) 功能实现与介绍

2018/06

2018/06/01 MySQL · 特性分析 · 8.0 对WAL的设计修改
2018/06/02 MariaDB · 特性分析 · 基于GTID的复制分析
2018/06/03 MySQL · 最佳实践 · 难以置信,MySQL也可以无损自由切换
2018/06/04 MySQL · 特性分析 · 8.0 WriteSet 并行复制
2018/06/05 MongoDB · 引擎特性 · writeConcern原理解析
2018/06/06 MSSQL · 最佳实践 · RDS SDK实现数据库迁移上阿里云RDS SQL Server
2018/06/07 PgSQL · 内核特性 · RDS PostgreSQL 高并发场景下提高系统吞吐量
2018/06/08 PgSQL · 应用案例 · PostgresPro buildin pool原理分析与测试
2018/06/09 MySQL · RocksDB · Column Family介绍
2018/06/10 PgSQL · 应用案例 · PostgreSQL + PostGIS 时态分析

2018/05

2018/05/01 MySQL · Community · Congratulations on MySQL 8.0 GA
2018/05/02 MySQL · 社区动态 · Online DDL 工具 gh-ost 支持阿里云 RDS
2018/05/03 MySQL · 特性分析 · MySQL 8.0 资源组 (Resource Groups)
2018/05/04 MySQL · 引擎分析 · InnoDB行锁分析
2018/05/05 PgSQL · 特性分析 · 神奇的pg_rewind
2018/05/06 MSSQL · 最佳实践 · 阿里云RDS SQL自动化迁移上云的一种解决方案
2018/05/07 MongoDB · 引擎特性 · journal 与 oplog,究竟谁先写入?
2018/05/08 MySQL · RocksDB · MANIFEST文件介绍
2018/05/09 MySQL · 源码分析 · change master to
2018/05/10 PgSQL · 应用案例 · 阿里云 RDS PostgreSQL 高并发特性 vs 社区版本

2018/04

2018/04/01 MySQL · 引擎特性 · InnoDB 表空间加密
2018/04/02 MongoDB · myrocks · mongorocks 引擎原理解析
2018/04/03 MySQL · 引擎特性 · InnoDB 数据页解析
2018/04/04 MySQL · MyRocks · TTL特性介绍
2018/04/05 MySQL · 源码分析 · 协议模块浅析
2018/04/06 MSSQL · 最佳实践 · 如何监控备份还原进度
2018/04/07 MySQL · 特性分析 · MySQL的预编译功能
2018/04/08 MySQL · 特性分析 · (deleted) 临时空间
2018/04/09 MySQL · RocksDB · WAL(WriteAheadLog)介绍
2018/04/10 PgSQL · 应用案例 · 相似文本识别与去重

2018/03

2018/03/01 MySQL · 源码分析 · InnoDB的read view,回滚段和purge过程简介
2018/03/02 MySQL · 源码分析 · 原子DDL的实现过程
2018/03/03 MongoDB · Feature · In-place update in MongoDB
2018/03/04 MSSQL · 最佳实践 · 利用文件组实现冷热数据隔离备份方案
2018/03/05 PgSQL · 内核优化 · Hybrid DB for PG 赋能向量化执行和查询子树封装
2018/03/06 MySQL · 特性分析 · innodb_buffer_pool_size在线修改
2018/03/07 MySQL · myrocks · 事务锁分析
2018/03/08 PgSQL · 特性分析 · 事务ID回卷问题
2018/03/09 MariaDB · 源码分析 · thread pool
2018/03/10 PgSQL · 应用案例 · 毫秒级文本相似搜索实践一

2018/02

2018/02/01 MySQL · 源码分析 · 常用SQL语句的MDL加锁源码分析
2018/02/02 Influxdb · 源码分析 · Influxdb cluster实现探究
2018/02/03 MySQL · 源码分析 · 权限浅析
2018/02/04 PgSQL · 源码分析 · AutoVacuum机制之autovacuum worker
2018/02/05 MSSQL · 最佳实践 · 数据库恢复模式与备份的关系
2018/02/06 PgSQL · 最佳实践 · 利用异步 dblink 快速从 oss 装载数据
2018/02/07 MySQL · 源码分析 · 新连接的建立
2018/02/08 MySQL · 引擎特性 · INFORMATION_SCHEMA系统表的实现
2018/02/09 MySQL · 最佳实践 · 在线收缩UNDO Tablespace
2018/02/10 PgSQL · 应用案例 · 自定义并行聚合函数的原理与实践

2018/01

2018/01/01 MySQL · 引擎特性 · Group Replication内核解析之二
2018/01/02 MySQL · 引擎特性 · MySQL内核对读写分离的支持
2018/01/03 PgSQL · 内核解析 · 同步流复制实现分析
2018/01/04 MySQL · 捉虫动态 · UK 包含 NULL 值备库延迟分析
2018/01/05 MySQL · 捉虫动态 · Error in munmap() “Cannot allocate memory”
2018/01/06 MSSQL · 最佳实践 · 数据库备份链
2018/01/07 MySQL · 捉虫动态 · 字符集相关变量介绍及binlog中字符集相关缺陷分析
2018/01/08 PgSQL · 应用案例 · 传统分库分表(sharding)的缺陷与破解之法
2018/01/09 MySQL · MyRocks · MyRocks参数介绍
2018/01/10 PgSQL · 应用案例 · 惊天性能!单RDS PostgreSQL实例支撑 2000亿

2017/12

2017/12/01 MySQL · 引擎特性 · InnoDB 事务系统
2017/12/02 MySQL · 引擎特性 · Innodb 锁子系统浅析
2017/12/03 MySQL · 特性分析 · LOGICAL_CLOCK 并行复制原理及实现分析
2017/12/04 PgSQL · 源码分析 · AutoVacuum机制之autovacuum launcher
2017/12/05 MSSQL · 最佳实践 · SQL Server备份策略
2017/12/06 MySQL · 最佳实践 · 一个“异常”的索引选择
2017/12/07 PgSQL · 内核开发 · 利用一致性快照迁移你的数据
2017/12/08 PgSQL · 应用案例 · 手机行业分析、决策系统设计-实时圈选、透视、估算
2017/12/09 MySQL · 最佳实践 · 如何索引JSON字段
2017/12/10 MySQL · myrocks · 相关tools介绍

2017/11

2017/11/01 MySQL · 数据恢复 · undrop-for-innodb
2017/11/02 MySQL · 引擎特性 · DROP TABLE之binlog解析
2017/11/03 MSSQL · 最佳实践 · SQL Server三种常见备份
2017/11/04 MySQL · 最佳实践 · 什么时候该升级内存规格
2017/11/05 MySQL · 源码分析 · InnoDB LRU List刷脏改进之路
2017/11/06 MySQL · 特性分析 · MySQL 5.7 外部XA Replication实现及缺陷分析
2017/11/07 PgSQL · 最佳实践 · 双十一数据运营平台订单Feed数据洪流实时分析方案
2017/11/08 MySQL · 引擎特性 · TokuDB hot-index机制
2017/11/09 MySQL · 最佳实践 · 分区表基本类型
2017/11/10 PgSQL · 应用案例 · 流式计算与异步消息在阿里实时订单监测中的应用

2017/10

2017/10/01 PgSQL · 特性分析 · MVCC机制浅析
2017/10/02 MySQL · 性能优化· CloudDBA SQL优化建议之统计信息获取
2017/10/03 MySQL · 引擎特性 · InnoDB mini transation
2017/10/04 MySQL · 特性介绍 · 一些流行引擎存储格式简介
2017/10/05 MSSQL · 架构分析 · 从SQL Server 2017发布看SQL Server架构的演变
2017/10/06 MySQL · 引擎介绍 · Sphinx源码剖析(三)
2017/10/07 PgSQL · 内核开发 · 如何管理你的 PostgreSQL 插件
2017/10/08 MySQL · 特性分析 · 数据一样checksum不一样
2017/10/09 PgSQL · 应用案例 · 经营、销售分析系统DB设计之共享充电宝
2017/10/10 MySQL · 捉虫动态 · 信号处理机制分析

2017/09

2017/09/01 POLARDB · 新品介绍 · 深入了解阿里云新一代产品 POLARDB
2017/09/02 HybridDB · 最佳实践 · 阿里云数据库PetaData
2017/09/03 MySQL · 捉虫动态 · show binary logs 灵异事件
2017/09/04 MySQL · myrocks · myrocks之Bloom filter
2017/09/05 MySQL · 特性分析 · 浅谈 MySQL 5.7 XA 事务改进
2017/09/06 MySQL · 特性分析 · 利用gdb跟踪MDL加锁过程
2017/09/07 MySQL · 源码分析 · Innodb 引擎Redo日志存储格式简介
2017/09/08 MSSQL · 应用案例 · 日志表设计优化与实现
2017/09/09 PgSQL · 应用案例 · 海量用户实时定位和圈人-团圆社会公益系统
2017/09/10 MySQL · 源码分析 · 一条insert语句的执行过程

2017/08

2017/08/01 MySQL · 引擎特性 · Group Replication内核解析
2017/08/02 PgSQL · 特性介绍 · 列存元数据扫描介绍
2017/08/03 MySQL · 源码分析 · MySQL replication partial transaction
2017/08/04 MySQL · 特性分析 · 到底是谁执行了FTWL
2017/08/05 MySQL · 源码分析 · mysql认证阶段漫游
2017/08/06 MySQL · 源码分析 · 内存分配机制
2017/08/07 PgSQL · 源码分析 · PG 优化器中的pathkey与索引在排序时的使用
2017/08/08 MSSQL· 实现分析 · Extend Event日志文件的分析方法
2017/08/09 MySQL · 源码分析 · SHUTDOWN过程
2017/08/10 PgSQL · 应用案例 · HDB for PG特性(数据排盘与任意列高效率过滤)

2017/07

2017/07/01 MySQL · 引擎特性 · InnoDB崩溃恢复
2017/07/02 PgSQL · 应用案例 · 阿里云RDS金融数据库(三节点版) - 背景篇
2017/07/03 AliSQL · 特性介绍 · 支持 Invisible Indexes
2017/07/04 TokuDB · 引擎特性 · HybridDB for MySQL高压缩引擎TokuDB 揭秘
2017/07/05 MySQL · myrocks · myrocks写入分析
2017/07/06 MSSQL · 实现分析 · Extend Event实现审计日志对SQL Server性能影响
2017/07/07 HybridDB · 源码分析 · MemoryContext 内存管理和内存异常分析
2017/07/08 MySQL · 实现分析 · HybridDB for MySQL 数据压缩
2017/07/09 PgSQL · 最佳实践 · CPU满问题处理
2017/07/10 MySQL · 源码分析 · InnoDB 异步IO工作流程

2017/06

2017/06/01 MySQL · 源码分析 · Tokudb序列化和反序列化过程
2017/06/02 PgSQL · 应用案例 · HTAP视角,数据与计算的生态融合
2017/06/03 MySQL · 引擎特性 · 从节点可更新机制
2017/06/04 PgSQL · 特性分析 · 数据库崩溃恢复(下)
2017/06/05 MySQL · 捉虫动态 · InnoDB crash
2017/06/06 MSSQL · 实现分析 · SQL Server实现审计日志的方案探索
2017/06/07 MySQL · 源码分析 · InnoDB Repeatable Read隔离级别之大不同
2017/06/08 MySQL · myrocks · MyRocks之memtable切换与刷盘
2017/06/09 PgSQL · 最佳实践 · 云上的数据迁移
2017/06/10 MySQL · 社区新闻 · MariaDB 10.2 GA

2017/05

2017/05/01 MySQL · 引擎特性 · InnoDB Buffer Pool
2017/05/02 AliSQL · 特性介绍 · 动态加字段
2017/05/03 PgSQL · 特性分析 · 数据库崩溃恢复(上)
2017/05/04 MySQL · 答疑解惑 · MySQL 的那些网络超时错误
2017/05/05 HybridDB · 最佳实践 · HybridDB 数据合并的方法与原理
2017/05/06 MSSQL · 应用案例 · 构建死锁自动收集系统
2017/05/07 PostgreSQL · 实现分析 · PostgreSQL 10.0 并行查询和外部表的结合
2017/05/08 RocksDB · 特性介绍 · HashLinkList 内存表
2017/05/09 MySQL · myrocks · fast data load
2017/05/10 PgSQL · 应用案例 · “写入、共享、存储、计算” 最佳实践

2017/04

2017/04/01 MySQL · 源码分析 · MySQL 半同步复制数据一致性分析
2017/04/02 MYSQL · 新特性 · MySQL 8.0对Parser所做的改进
2017/04/03 MySQL · 引擎介绍 · Sphinx源码剖析(二)
2017/04/04 PgSQL · 特性分析 · checkpoint机制浅析
2017/04/05 MySQL · 特性分析 · common table expression
2017/04/06 PgSQL · 应用案例 · 逻辑订阅给业务架构带来了什么?
2017/04/07 MSSQL · 应用案例 · 基于内存优化表的列存储索引分析Web Access Log
2017/04/08 TokuDB · 捉虫动态 · MRR 导致查询失败
2017/04/09 HybridDB · 稳定性 · HybridDB如何优雅的处理Out Of Memery问题
2017/04/10 MySQL · 捉虫动态 · 5.7 mysql_upgrade 元数据锁等待

2017/03

2017/03/01 MySQL · 引擎特性 · InnoDB IO子系统
2017/03/02 PgSQL · 特性分析 · Write-Ahead Logging机制浅析
2017/03/03 MySQL · 性能优化 · MySQL常见SQL错误用法
2017/03/04 MSSQL · 特性分析 · 列存储技术做实时分析
2017/03/05 MySQL · 新特性分析 · 5.7中Derived table变形记
2017/03/06 MySQL · 实现分析 · 对字符集和字符序支持的实现
2017/03/07 MySQL · 源码分析 · MySQL BINLOG半同步复制数据安全性分析
2017/03/08 HybridDB · 性能优化 · Count Distinct的几种实现方式
2017/03/09 PgSQL · 应用案例 · PostgreSQL OLAP加速技术之向量计算
2017/03/10 MySQL · myrocks · myrocks监控信息

2017/02

2017/02/01 AliSQL · 开源 · Sequence Engine
2017/02/02 MySQL · myrocks · myrocks之备份恢复
2017/02/03 MySQL · 挖坑 · LOCK_active_mi/LOCK_msp_map 优化思路
2017/02/04 MySQL · 源码分析 · 词法分析及其性能优化
2017/02/05 SQL优化 · 经典案例 · 索引篇
2017/02/06 MySQL · 新特性分析 · CTE执行过程与实现原理
2017/02/07 PgSQL · 源码分析 · PG优化器物理查询优化
2017/02/08 SQL Server · 特性介绍 · 聚集列存储索引
2017/02/09 PgSQL · 应用案例 · 聚集存储 与 BRIN索引
2017/02/10 PgSQL · 应用案例 · GIN索引在任意组合查询中的应用

2017/01

2017/01/01 MySQL · 引擎特性 · InnoDB 同步机制
2017/01/02 MySQL · myrocks · myrocks index condition pushdown
2017/01/03 PgSQL · 案例分享 · PostgreSQL+HybridDB解决企业TP+AP混合需求
2017/01/04 MongoDB · 特性分析 · 网络性能优化
2017/01/05 MySQL · 捉虫动态 · event_scheduler 慢日志记错
2017/01/06 PgSQL · 引擎介绍 · 向量化执行引擎简介
2017/01/07 SQL Server · 特性分析 · 2012列存储索引技术
2017/01/08 PgSQL · 乱入拜年 · 小鸡吉吉和小象Pi吉(PostgreSQL)的鸡年传奇
2017/01/09 MySQL · 特性分析 · 5.7 error log 时区和系统时区不同
2017/01/10 TokuDB · 源码分析 · 一条query语句的执行过程

2016/12

2016/12/01 MySQL · 引擎特性 · Infobright 列存数据库
2016/12/02 MySQL · myrocks · myrocks统计信息
2016/12/03 SQL Server · 特性介绍 · 统计信息
2016/12/04 PgSQL · 案例分享 · 从春运抢火车票思考数据库设计
2016/12/05 HybridDB · 最佳实践 · OLAP和OLTP一体化打造
2016/12/06 TokuDB · 特性分析 · 导入数据大杀器:Loader
2016/12/07 PgSQL · 案例分享 · PostgreSQL 性能诊断指南
2016/12/08 MySQL · 捉虫动态 · 5.6中ORDER BY + LIMIT 错选执行计划
2016/12/09 Redis · 最佳实践 · 阿里云Redis助力双11业务
2016/12/10 PgSQL · 案例分享 · 递归收敛优化

2016/11

2016/11/01 PgSQL · 特性分析 · 金融级同步多副本分级配置方法
2016/11/02 MySQL · myrocks · myrocks之事务处理
2016/11/03 MySQL · TokuDB · rbtree block allocator
2016/11/04 MySQL · 引擎特性 · Column Compression浅析
2016/11/05 MySQL · 引擎介绍 · Sphinx源码剖析(一)
2016/11/06 PgSQL · 特性分析 · PostgreSQL 9.6 如何把你的机器掏空
2016/11/07 PgSQL · 特性分析 · PostgreSQL 9.6 让多核并行起来
2016/11/08 MSSQL · 最佳实战 · 巧用COLUMNS_UPDATED获取数据变更
2016/11/09 PgSQL · GIS应用 · 物流, 动态路径规划
2016/11/10 PgSQL · 特性分析· JIT 在数据仓库中的应用价值

2016/10

2016/10/01 AliSQL · 社区动态 · 关于开源之后评论的评论
2016/10/02 MySQL · 社区见闻 · Oracle Open World 2016 见闻
2016/10/03 MySQL · 社区见闻 · Percona Live 2016 见闻
2016/10/04 MySQL · 社区见闻 · MariaDB Developer Meeting 2016
2016/10/05 MySQL · myrocks · data dictionary 分析
2016/10/06 MySQL · 源码分析 · 无法revoke单库或单表权限
2016/10/07 PgSQL · 代码浅析 · PostgreSQL 可靠性分析
2016/10/08 PgSQL · 代码浅析 · PostgreSQL 9.6 聚合OP复用的优化分析
2016/10/09 MySQL · 特性分析 · 直方图的实现与分析
2016/10/10 SQL Server · 最佳实践 · 参数嗅探问题

2016/09

2016/09/01 MySQL · 社区贡献 · AliSQL那些事儿
2016/09/02 PetaData · 架构体系 · PetaData第二代低成本存储体系
2016/09/03 MySQL · 社区动态 · MariaDB 10.2 前瞻
2016/09/04 MySQL · 特性分析 · 执行计划缓存设计与实现
2016/09/05 PgSQL · 最佳实践 · pg_rman源码浅析与使用
2016/09/06 MySQL · 捉虫状态 · bug分析两例
2016/09/07 PgSQL · 源码分析 · PG优化器浅析
2016/09/08 MongoDB · 特性分析· Sharding原理与应用
2016/09/09 PgSQL · 源码分析 · PG中的无锁算法和原子操作应用一则
2016/09/10 SQLServer · 最佳实践 · TEMPDB的设计

2016/08

2016/08/01 MySQL · 特性分析 ·MySQL 5.7新特性系列四
2016/08/02 PgSQL · PostgreSQL 逻辑流复制技术的秘密
2016/08/03 MySQL · 特性分析 · MyRocks简介
2016/08/04 GPDB · 特性分析· Greenplum 备份架构
2016/08/05 SQLServer · 最佳实践 · RDS for SQLServer 2012权限限制提升与改善
2016/08/06 TokuDB · 引擎特性 · REPLACE 语句优化
2016/08/07 MySQL · 专家投稿 · InnoDB物理行中null值的存储的推断与验证
2016/08/08 PgSQL · 实战经验 · 旋转门压缩算法在PostgreSQL中的实现
2016/08/09 MySQL · 源码分析 · Query Cache并发处理
2016/08/10 PgSQL · 源码分析· pg_dump分析

2016/07

2016/07/01 MySQL · 特性分析 ·MySQL 5.7新特性系列三
2016/07/02 MySQL · 特性分析 · 5.7 代价模型浅析
2016/07/03 PgSQL · 实战经验 · 分组TOP性能提升44倍
2016/07/04 MySQL · 源码分析 · 网络通信模块浅析
2016/07/05 MongoDB · 特性分析 · 索引原理
2016/07/06 SQLServer · 特性分析 · XML与JSON应用比较
2016/07/07 MySQL · 最佳实战 · 审计日志实用案例分析
2016/07/08 MySQL · 性能优化 · 条件下推到物化表
2016/07/09 MySQL · 源码分析 · Query Cache内部剖析
2016/07/10 MySQL · 捉虫动态 · 备库1206错误问题说明

2016/06

2016/06/01 MySQL · 特性分析 · innodb 锁分裂继承与迁移
2016/06/02 MySQL · 特性分析 ·MySQL 5.7新特性系列二
2016/06/03 PgSQL · 实战经验 · 如何预测Freeze IO风暴
2016/06/04 GPDB · 特性分析· Filespace和Tablespace
2016/06/05 MariaDB · 新特性 · 窗口函数
2016/06/06 MySQL · TokuDB · checkpoint过程
2016/06/07 MySQL · 特性分析 · 内部临时表
2016/06/08 MySQL · 最佳实践 · 空间优化
2016/06/09 SQLServer · 最佳实践 · 数据库实现大容量插入的几种方式
2016/06/10 MySQL · 引擎特性 · InnoDB COUNT(*) 优化(?)

2016/05

2016/05/01 MySQL · 引擎特性 · 基于InnoDB的物理复制实现
2016/05/02 MySQL · 特性分析 · MySQL 5.7新特性系列一
2016/05/03 PostgreSQL · 特性分析 · 逻辑结构和权限体系
2016/05/04 MySQL · 特性分析 · innodb buffer pool相关特性
2016/05/05 PG&GP · 特性分析 · 外部数据导入接口实现分析
2016/05/06 SQLServer · 最佳实践 · 透明数据加密在SQLServer的应用
2016/05/07 MySQL · TokuDB · 日志子系统和崩溃恢复过程
2016/05/08 MongoDB · 特性分析 · Sharded cluster架构原理
2016/05/09 PostgreSQL · 特性分析 · 统计信息计算方法
2016/05/10 MySQL · 捉虫动态 · left-join多表导致crash

2016/04

2016/04/01 MySQL · 参数故事 · innodb_additional_mem_pool_size
2016/04/02 GPDB · 特性分析 · Segment事务一致性与异常处理
2016/04/03 GPDB · 特性分析 · Segment 修复指南
2016/04/04 MySQL · 捉虫动态 · 并行复制外键约束问题二
2016/04/05 PgSQL · 性能优化 · 如何潇洒的处理每天上百TB的数据增量
2016/04/06 Memcached · 最佳实践 · 热点 Key 问题解决方案
2016/04/07 MongoDB · 最佳实践 · 短连接Auth性能优化
2016/04/08 MySQL · 最佳实践 · RDS 只读实例延迟分析
2016/04/09 MySQL · TokuDB · TokuDB索引结构–Fractal Tree
2016/04/10 MySQL · TokuDB · Savepoint漫谈

2016/03

2016/03/01 MySQL · TokuDB · 事务子系统和 MVCC 实现
2016/03/02 MongoDB · 特性分析 · MMAPv1 存储引擎原理
2016/03/03 PgSQL · 源码分析 · 优化器逻辑推理
2016/03/04 SQLServer · BUG分析 · Agent 链接泄露分析
2016/03/05 Redis · 特性分析 · AOF Rewrite 分析
2016/03/06 MySQL · BUG分析 · Rename table 死锁分析
2016/03/07 MySQL · 物理备份 · Percona XtraBackup 备份原理
2016/03/08 GPDB · 特性分析· GreenPlum FTS 机制
2016/03/09 MySQL · 答疑解惑 · 备库Seconds_Behind_Master计算
2016/03/10 MySQL · 答疑解惑 · MySQL 锁问题最佳实践

2016/02

2016/02/01 MySQL · 引擎特性 · InnoDB 文件系统之文件物理结构
2016/02/02 MySQL · 引擎特性 · InnoDB 文件系统之IO系统和内存管理
2016/02/03 MySQL · 特性分析 · InnoDB transaction history
2016/02/04 PgSQL · 会议见闻 · PgConf.Russia 2016 大会总结
2016/02/05 PgSQL · 答疑解惑 · PostgreSQL 9.6 并行查询实现分析
2016/02/06 MySQL · TokuDB · TokuDB之黑科技工具
2016/02/07 PgSQL · 性能优化 · PostgreSQL TPC-C极限优化玩法
2016/02/08 MariaDB · 版本特性 · MariaDB 的 GTID 介绍
2016/02/09 MySQL · 特性分析 · 线程池
2016/02/10 MySQL · 答疑解惑 · mysqldump tips 两则

2016/01

2016/01/01 MySQL · 引擎特性 · InnoDB 事务锁系统简介
2016/01/02 GPDB · 特性分析· GreenPlum Primary/Mirror 同步机制
2016/01/03 MySQL · 专家投稿 · MySQL5.7 的 JSON 实现
2016/01/04 MySQL · 特性分析 · 优化器 MRR & BKA
2016/01/05 MySQL · 答疑解惑 · 物理备份死锁分析
2016/01/06 MySQL · TokuDB · Cachetable 的工作线程和线程池
2016/01/07 MySQL · 特性分析 · drop table的优化
2016/01/08 MySQL · 答疑解惑 · GTID不一致分析
2016/01/09 PgSQL · 特性分析 · Plan Hint
2016/01/10 MariaDB · 社区动态 · MariaDB on Power8 (下)

2015/12

2015/12/01 MySQL · 引擎特性 · InnoDB 事务子系统介绍
2015/12/02 PgSQL · 特性介绍 · 全文搜索介绍
2015/12/03 MongoDB · 捉虫动态 · Kill Hang问题排查记录
2015/12/04 MySQL · 参数优化 ·RDS MySQL参数调优最佳实践
2015/12/05 PgSQL · 特性分析 · 备库激活过程分析
2015/12/06 MySQL · TokuDB · 让Hot Backup更完美
2015/12/07 PgSQL · 答疑解惑 · 表膨胀
2015/12/08 MySQL · 特性分析 · Index Condition Pushdown (ICP)
2015/12/09 MariaDB · 社区动态 · MariaDB on Power8
2015/12/10 MySQL · 特性分析 · 企业版特性一览

2015/11

2015/11/01 MySQL · 社区见闻 · OOW 2015 总结 MySQL 篇
2015/11/02 MySQL · 特性分析 · Statement Digest
2015/11/03 PgSQL · 答疑解惑 · PostgreSQL 用户组权限管理
2015/11/04 MySQL · 特性分析 · MDL 实现分析
2015/11/05 PgSQL · 特性分析 · full page write 机制
2015/11/06 MySQL · 捉虫动态 · MySQL 外键异常分析
2015/11/07 MySQL · 答疑解惑 · MySQL 优化器 range 的代价计算
2015/11/08 MySQL · 捉虫动态 · ORDER/GROUP BY 导致 mysqld crash
2015/11/09 MySQL · TokuDB · TokuDB 中的行锁
2015/11/10 MySQL · 捉虫动态 · order by limit 造成优化器选择索引错误

2015/10

2015/10/01 MySQL · 引擎特性 · InnoDB 全文索引简介
2015/10/02 MySQL · 特性分析 · 跟踪Metadata lock
2015/10/03 MySQL · 答疑解惑 · 索引过滤性太差引起CPU飙高分析
2015/10/04 PgSQL · 特性分析 · PG主备流复制机制
2015/10/05 MySQL · 捉虫动态 · start slave crash 诊断分析
2015/10/06 MySQL · 捉虫动态 · 删除索引导致表无法打开
2015/10/07 PgSQL · 特性分析 · PostgreSQL Aurora方案与DEMO
2015/10/08 TokuDB · 捉虫动态 · CREATE DATABASE 导致crash问题
2015/10/09 PgSQL · 特性分析 · pg_receivexlog工具解析
2015/10/10 MySQL · 特性分析 · MySQL权限存储与管理

2015/09

2015/09/01 MySQL · 引擎特性 · InnoDB Adaptive hash index介绍
2015/09/02 PgSQL · 特性分析 · clog异步提交一致性、原子操作与fsync
2015/09/03 MySQL · 捉虫动态 · BUG 几例
2015/09/04 PgSQL · 答疑解惑 · 诡异的函数返回值
2015/09/05 MySQL · 捉虫动态 · 建表过程中crash造成重建表失败
2015/09/06 PgSQL · 特性分析 · 谈谈checkpoint的调度
2015/09/07 MySQL · 特性分析 · 5.6 并行复制恢复实现
2015/09/08 MySQL · 备库优化 · relay fetch 备库优化
2015/09/09 MySQL · 特性分析 · 5.6并行复制事件分发机制
2015/09/10 MySQL · TokuDB · 文件目录谈

2015/08

2015/08/01 MySQL · 社区动态 · InnoDB Page Compression
2015/08/02 PgSQL · 答疑解惑 · RDS中的PostgreSQL备库延迟原因分析
2015/08/03 MySQL · 社区动态 · MySQL5.6.26 Release Note解读
2015/08/04 PgSQL · 捉虫动态 · 执行大SQL语句提示无效的内存申请大小
2015/08/05 MySQL · 社区动态 · MariaDB InnoDB表空间碎片整理
2015/08/06 PgSQL · 答疑解惑 · 归档进程cp命令的core文件追查
2015/08/07 MySQL · 答疑解惑 · open file limits
2015/08/08 MySQL · TokuDB · 疯狂的 filenum++
2015/08/09 MySQL · 功能分析 · 5.6 并行复制实现分析
2015/08/10 MySQL · 功能分析 · MySQL表定义缓存

2015/07

2015/07/01 MySQL · 引擎特性 · Innodb change buffer介绍
2015/07/02 MySQL · TokuDB · TokuDB Checkpoint机制
2015/07/03 PgSQL · 特性分析 · 时间线解析
2015/07/04 PgSQL · 功能分析 · PostGIS 在 O2O应用中的优势
2015/07/05 MySQL · 引擎特性 · InnoDB index lock前世今生
2015/07/06 MySQL · 社区动态 · MySQL内存分配支持NUMA
2015/07/07 MySQL · 答疑解惑 · 外键删除bug分析
2015/07/08 MySQL · 引擎特性 · MySQL logical read-ahead
2015/07/09 MySQL · 功能介绍 · binlog拉取速度的控制
2015/07/10 MySQL · 答疑解惑 · 浮点型的显示问题

2015/06

2015/06/01 MySQL · 引擎特性 · InnoDB 崩溃恢复过程
2015/06/02 MySQL · 捉虫动态 · 唯一键约束失效
2015/06/03 MySQL · 捉虫动态 · ALTER IGNORE TABLE导致主备不一致
2015/06/04 MySQL · 答疑解惑 · MySQL Sort 分页
2015/06/05 MySQL · 答疑解惑 · binlog event 中的 error code
2015/06/06 PgSQL · 功能分析 · Listen/Notify 功能
2015/06/07 MySQL · 捉虫动态 · 任性的 normal shutdown
2015/06/08 PgSQL · 追根究底 · WAL日志空间的意外增长
2015/06/09 MySQL · 社区动态 · MariaDB Role 体系
2015/06/10 MySQL · TokuDB · TokuDB数据文件大小计算

2015/05

2015/05/01 MySQL · 引擎特性 · InnoDB redo log漫游
2015/05/02 MySQL · 专家投稿 · MySQL数据库SYS CPU高的可能性分析
2015/05/03 MySQL · 捉虫动态 · 5.6 与 5.5 InnoDB 不兼容导致 crash
2015/05/04 MySQL · 答疑解惑 · InnoDB 预读 VS Oracle 多块读
2015/05/05 PgSQL · 社区动态 · 9.5 新功能BRIN索引
2015/05/06 MySQL · 捉虫动态 · MySQL DDL BUG
2015/05/07 MySQL · 答疑解惑 · set names 都做了什么
2015/05/08 MySQL · 捉虫动态 · 临时表操作导致主备不一致
2015/05/09 TokuDB · 引擎特性 · zstd压缩算法
2015/05/10 MySQL · 答疑解惑 · binlog 位点刷新策略

2015/04

2015/04/01 MySQL · 引擎特性 · InnoDB undo log 漫游
2015/04/02 TokuDB · 产品新闻 · RDS TokuDB小手册
2015/04/03 TokuDB · 特性分析 · 行锁(row-lock)与区间锁(range-lock)
2015/04/04 PgSQL · 社区动态 · 说一说PgSQL 9.4.1中的那些安全补丁
2015/04/05 MySQL · 捉虫动态 · 连接断开导致XA事务丢失
2015/04/06 MySQL · 捉虫动态 · GTID下slave_net_timeout值太小问题
2015/04/07 MySQL · 捉虫动态 · Relay log 中 GTID group 完整性检测
2015/04/08 MySQL · 答疑释惑 · UPDATE交换列单表和多表的区别
2015/04/09 MySQL · 捉虫动态 · 删被引用索引导致crash
2015/04/10 MySQL · 答疑释惑 · GTID下auto_position=0时数据不一致

2015/03

2015/03/01 MySQL · 答疑释惑· 并发Replace into导致的死锁分析
2015/03/02 MySQL · 性能优化· 5.7.6 InnoDB page flush 优化
2015/03/03 MySQL · 捉虫动态· pid file丢失问题分析
2015/03/04 MySQL · 答疑释惑· using filesort VS using temporary
2015/03/05 MySQL · 优化限制· MySQL index_condition_pushdown
2015/03/06 MySQL · 捉虫动态·DROP DATABASE外键约束的GTID BUG
2015/03/07 MySQL · 答疑释惑· lower_case_table_names 使用问题
2015/03/08 PgSQL · 特性分析· Logical Decoding探索
2015/03/09 PgSQL · 特性分析· jsonb类型解析
2015/03/10 TokuDB ·引擎机制· TokuDB线程池

2015/02

2015/02/01 MySQL · 性能优化· InnoDB buffer pool flush策略漫谈
2015/02/02 MySQL · 社区动态· 5.6.23 InnoDB相关Bugfix
2015/02/03 PgSQL · 特性分析· Replication Slot
2015/02/04 PgSQL · 特性分析· pg_prewarm
2015/02/05 MySQL · 答疑释惑· InnoDB丢失自增值
2015/02/06 MySQL · 答疑释惑· 5.5 和 5.6 时间类型兼容问题
2015/02/07 MySQL · 捉虫动态· 变量修改导致binlog错误
2015/02/08 MariaDB · 特性分析· 表/表空间加密
2015/02/09 MariaDB · 特性分析· Per-query variables
2015/02/10 TokuDB · 特性分析· 日志详解

2015/01

2015/01/01 MySQL · 性能优化· Group Commit优化
2015/01/02 MySQL · 新增特性· DDL fast fail
2015/01/03 MySQL · 性能优化· 启用GTID场景的性能问题及优化
2015/01/04 MySQL · 捉虫动态· InnoDB自增列重复值问题
2015/01/05 MySQL · 优化改进· 复制性能改进过程
2015/01/06 MySQL · 谈古论今· key分区算法演变分析
2015/01/07 MySQL · 捉虫动态· mysql client crash一例
2015/01/08 MySQL · 捉虫动态· 设置 gtid_purged 破坏AUTO_POSITION复制协议
2015/01/09 MySQL · 捉虫动态· replicate filter 和 GTID 一起使用的问题
2015/01/10 TokuDB·特性分析· Optimize Table

2014/12

2014/12/01 MySQL · 性能优化 · 5.7 Innodb事务系统
2014/12/02 MySQL · 踩过的坑 · 5.6 GTID 和存储引擎那会事
2014/12/03 MySQL · 性能优化 · thread pool 原理分析
2014/12/04 MySQL · 性能优化 · 并行复制外建约束问题
2014/12/05 MySQL · 答疑释惑 · binlog event有序性
2014/12/06 MySQL · 答疑释惑 · server_id为0的Rotate
2014/12/07 MySQL · 性能优化 · Bulk Load for CREATE INDEX
2014/12/08 MySQL · 捉虫动态·Opened tables block read only
2014/12/09 MySQL· 优化改进· GTID启动优化
2014/12/10 TokuDB · TokuDB · Binary Log Group Commit with TokuDB

2014/11

2014/11/01 MySQL · 捉虫动态 · OPTIMIZE 不存在的表
2014/11/02 MySQL · 捉虫动态 · SIGHUP 导致 binlog 写错
2014/11/03 MySQL · 5.7改进 · Recovery改进
2014/11/04 MySQL · 5.7特性 · 高可用支持
2014/11/05 MySQL · 5.7优化 · Metadata Lock子系统的优化
2014/11/06 MySQL · 5.7特性 · 在线Truncate undo log 表空间
2014/11/07 MySQL · 性能优化 · hash_scan 算法的实现解析
2014/11/08 TokuDB · 版本优化 · 7.5.0
2014/11/09 TokuDB · 引擎特性 · FAST UPDATES
2014/11/10 MariaDB · 性能优化 · filesort with small LIMIT optimization

2014/10

2014/10/01 MySQL · 5.7重构 · Optimizer Cost Model
2014/10/02 MySQL · 系统限制 · text字段数
2014/10/03 MySQL · 捉虫动态 · binlog重放失败
2014/10/04 MySQL · 捉虫动态 · 从库OOM
2014/10/05 MySQL · 捉虫动态 · 崩溃恢复失败
2014/10/06 MySQL · 功能改进 · InnoDB Warmup特性
2014/10/07 MySQL · 文件结构 · 告别frm文件
2014/10/08 MariaDB · 新鲜特性 · ANALYZE statement 语法
2014/10/09 TokuDB · 主备复制 · Read Free Replication
2014/10/10 TokuDB · 引擎特性 · 压缩

2014/09

2014/09/01 MySQL · 捉虫动态 · GTID 和 DELAYED
2014/09/02 MySQL · 限制改进 · GTID和升级
2014/09/03 MySQL · 捉虫动态 · GTID 和 binlog_checksum
2014/09/04 MySQL · 引擎差异·create_time in status
2014/09/05 MySQL · 参数故事 · thread_concurrency
2014/09/06 MySQL · 捉虫动态 · auto_increment
2014/09/07 MariaDB · 性能优化 · Extended Keys
2014/09/08 MariaDB · 主备复制 · CREATE OR REPLACE
2014/09/09 TokuDB · 参数故事 · 数据安全和性能
2014/09/10 TokuDB · HA方案 · TokuDB热备

2014/08

2014/08/01 MySQL · 参数故事 · timed_mutexes
2014/08/02 MySQL · 参数故事 · innodb_flush_log_at_trx_commit
2014/08/03 MySQL · 捉虫动态 · Count(Distinct) ERROR
2014/08/04 MySQL · 捉虫动态 · mysqldump BUFFER OVERFLOW
2014/08/05 MySQL · 捉虫动态 · long semaphore waits
2014/08/06 MariaDB · 分支特性 · 支持大于16K的InnoDB Page Size
2014/08/07 MariaDB · 分支特性 · FusionIO特性支持
2014/08/08 TokuDB · 性能优化 · Bulk Fetch
2014/08/09 TokuDB · 数据结构 · Fractal-Trees与LSM-Trees对比
2014/08/10 TokuDB·社区八卦·TokuDB团队

Neo4j 介绍(五):使用 java 访问 neo4j

April 24th 2019 at 19:35

这里主要介绍使用 java 访问 neo4j 的方法。

首先需要新建一个 maven 的项目,然后再使用这个项目访问 neo4j。

1. 新建一个 maven 项目

参考: https://blog.csdn.net/YF_Li123/article/details/79953731

打开 IntelliJ IDEA, Create New Project,

左侧选择 Maven, 右侧不用勾选 Create from archetype, 然后点击 next,

输入 GroupId 和 ArtifactId, Version 默认即可,然后点击 next,

接着 finish,

最后,在 src->main 下面新建 main 函数的类,就可以了。

2. 用该 maven 项目访问 neo4j

在 pom.xml 添加如下:

1
2
3
4
5
6
7
<dependencies>
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>1.7.3</version>
</dependency>
</dependencies>

在 main 函数中,import org.neo4j.driver.v1.*

使用方法:

1
2
3
Driver driver = GraphDatabase.driver( "bolt://localhost:7687", AuthTokens.basic( "neo4j", "123456" ) );
Session session = driver.session();
session.run("CREATE (m)-[:r2]->(c)");

该 demo 可以在 github 上下载: https://github.com/cighao/neo4j-java-driver-usage

Neo4j 介绍(三):使用 python 访问 neo4j

April 21st 2019 at 09:35

这里主要介绍使用 python 访问 neo4j 的方法。

python driver 的地址:https://github.com/neo4j/neo4j-python-driver

需要安装 python 3 版本,然后安装 pip3, 通过 pip3 安装驱动可以把驱动安装到 python 3 对应的库。

安装驱动:

1
pip3 install git+https://github.com/neo4j/neo4j-python-driver.git#egg=neo4j

有可能会在运行时报错,

File “/usr/local/lib/python3.4/dist-packages/neobolt/direct.py”, line 123, in supports
return self.version_info() >= (3, 2)
TypeError: unorderable types: str() >= int()

定位到报错的文件,发现报错的是 direct.py 文件的 supports() 函数。报错的原因的类型不匹配,通过调试发现,self.version_info() 返回的是字符串数组 ('dev',), 运行 self.version_info() >= (3, 2) 显然就会报错。没有找到有效的解决办法。supports() 函数主要是进行版本检查的,不是核心业务代码,所以目前的解决办法是,直接在 supports() 函数的第一行添加 return True, 默认版本检查通过。然后运行,发现没有报错。

示例:

from neo4j import GraphDatabasedriver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "123456"))def add_friend(tx, name, friend_name):    tx.run("MERGE (a:Person {name: $name}) "           "MERGE (a)-[:KNOWS]->(friend:Person {name: $friend_name})",           name=name, friend_name=friend_name)def print_friends(tx, name):    for record in tx.run("MATCH (a:Person)-[:KNOWS]->(friend) WHERE a.name = $name "                         "RETURN friend.name ORDER BY friend.name", name=name):        print(record["friend.name"])with driver.session() as session:    session.write_transaction(add_friend, "Arthur", "Guinevere")    session.write_transaction(add_friend, "Arthur", "Lancelot")    session.write_transaction(add_friend, "Arthur", "Merlin")    session.read_transaction(print_friends, "Arthur")

Neo4j 介绍(二):main 函数

April 13th 2019 at 09:35

这里主要介绍 neo4j 的 main 函数的一些流程。

main 函数在 CommunityEntryPoint 类中。

1
2
3
4
5
6
7
8
public static void main( String[] args )
{
int status = ServerBootstrapper.start( new CommunityBootstrapper(), args );
if ( status != 0 )
{
System.exit( status );
}
}

首先通过 ServerBootstrapper.start(new CommunityBootstrapper(), args) 进入到 ServerBootstrapper.start(Bootstrapper boot, String... argv) 方法, 在该方法的末尾通过 boot.start(args.homeDir(), args.configFile(), args.configOverrides()) 调用进入到 ServerBootstrapper.start(File homeDir, Optional<File> configFile, Map<String, String> configOverrides), 在该方法的末尾通过

1
2
server = createNeoServer(config, dependencies);
server.start();

启动。

通过 createNeoServer(config, dependencies) 会进入到,ServerBootstrapper.createNeoServer(Config config, GraphDatabaseDependencies dependencies), 在该函数的最后通过 createNeoServer(graphFactory, config, dependencies) 会进入到 CommunityBootstrapper.createNeoServer(GraphFactory graphFactory, Config config, GraphDatabaseDependencies dependencies), 该函数只有一个语句

1
return new CommunityNeoServer(config, graphFactory, dependencies);

最终是新建了一个 CommunityNeoServer 对象返回到了 ServerBootstrapper.start() 中, 并调用了 CommunityNeoServer 对象的 start() 方法,完成了 neo4j 的启动。

这样我们发现,整个启动的核心代码都在 CommunityNeoServer.start() 中,CommunityNeoServer 继承自 AbstractNeoServer, 并且没有重写 AbstractNeoServerstart() 方法,所以启动的核心代码都在 AbstractNeoServer.start() 函数中。 AbstractNeoServer.start() 中只有一行代码:

1
life.start();

这里的 lifeAbstractNeoServer 类的一个变量,是 LifeSupport 类的一个实例。lift.start() 会跳去执行 LifeSupport.start() 方法。

日常遇到的一些小问题的解决方案

March 29th 2019 at 18:35

记录平时走过的坑。

1. VirtualBox 中让虚拟机的分辨率自适应窗口大小

(1) 打开虚拟机 Devices -> Install Guest Additions…(it’s like inserting a cd to cdrom drive)
(2) 在虚拟机中运行以下命令:

1
2
3
4
sudo mkdir --p /media/cdrom
sudo mount -t auto /dev/cdrom /media/cdrom/
cd /media/cdrom/
sudo sh VBoxLinuxAdditions.run

可以在虚拟机窗口的下面选择调整大小。


2. win10 安装 ubuntu

https://segmentfault.com/a/1190000014523888


3. sudo: /usr/bin/sudo 必须属于用户 ID 0

一不小心把 /usr 目录的权限设置成了普通的用户,导致 sudo 用不了,输入 sudo 提示:

sudo: /usr/bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位
重启进入 recovery 模式。
recovery模式 –> 选择 root
进入命令行,执行:

1
2
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo

reboot 重启。
不过还是建议把整个 usr 目录的所有者改成 root:

1
chown -R root:root /usr


4. gcc: error: parser_lex.c: No such file or directory

https://github.com/filebench/filebench 安装 filebench 时,遇到 gcc: error: parser_lex.c: No such file or directory

Solution: sudo yum install flex 即可。


5. Install own OpenSSL on MacOS

(1) brew install openssl
(2) open ~/.bash_profile add:

1
2
3
4
export PATH="/usr/local/opt/openssl/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
source ~/.bash_profile

(3) source ~/.bash_profile


6. ramdisk 使用

创建挂载目录: mkdir /home/chenhao/ramdisk
查看内存使用量: htop
分配内存并挂载: sudo mount -t tmpfs -o size=10240m ramdisk /home/chenhao/ramdisk
查看: df -h
修改 /etc/fstab 自动挂载: ramdisk /home/chenhao/ramdisk tmpfs rw,relatime,size=10G 0 0


7. 安装 tbb

1
2
3
git clone https://github.com/intel/tbb.git
cd tbb
make

Inside tbb/build will be two new folders, one for the release version and the other for the debug version. Those folders are named like “architecture_ldVersion_g++Version_kernelVersion”.
I recommend setting some variables, for example in the .bashrc file, like:

1
2
3
4
TBB_INSTALL_DIR = $HOME/tbb
TBB_INCLUDE = $TBB_INSTALL_DIR/include
TBB_LIBRARY_RELEASE = $TBB_INSTALL_DIR/build/RELEASE_FOLDER
TBB_LIBRARY_DEBUG = $TBB_INSTALL_DIR/build/DEBUG_FOLDER

Example

1
2
3
4
5
6
7
8
9
// main.cpp
#include "tbb/task_scheduler_init.h"

int main(int argc, char* argv[]) {
// tbb::task_scheduler_init init(tbb::task_scheduler_init::automatic);
// implicit tbb::task_sheduler_init::automatic
tbb::task_scheduler_init init;
return 0;
}

1
g++ main.cpp -I$TBB_INCLUDE -Wl,-rpath,$TBB_LIBRARY_RELEASE -L$TBB_LIBRARY_RELEASE -ltbb

With -Wl,-rpath,$TBB_LIBRARY_RELEASE we are telling the dynamic linker where to find libtbb.so
Installation for Apple clang 5.1: [thanks to rwols for the info]
Instead of typing make, type make compiler=clang or make compiler=clang stdlib=libc++

8. MySQL 的一些相关操作

(1) mysql 创建用户
用此命令进入mysql:mysql -u root mysql
查询用户: select Host,User,Password from mysql.user;
删除用户名为空的用户: delete from mysql.user where user='';
查看当前用户: SELECT CURRENT_USER();

reference: https://www.jianshu.com/p/d7b9c468f20d

命令:

1
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

username:你将创建的用户名
host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

e.g.:

1
2
3
4
5
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';

刷新用户权限: FLUSH PRIVILEGES;

(2) 创建数据库
创建: CREATE DATABASE linkdb
显示: show databases

(3) 授权
先要用 root 登陆: mysql -u root mysql
在选择数据库: use <database name>
在授权,最后刷新权限: FLUSH PRIVILEGES;

命令:

1
GRANT privileges ON databasename.tablename TO 'username'@'host'

privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*

e.g.:

1
2
3
GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
GRANT ALL ON linkdb.* TO 'linkbench'@'%' identified by '123456' with grant option;

9. 源码安装 GCC 5

下载源码并解压。
进入源码路径后运行: ./contrib/download_prerequisites
新建 build 目录: mkdir build
进入 build 目录后运行: ../configure –-prefix=path --enable-checking=release --enable-languages=c,c++ --disable-multilib
prefix 指定安装目录。
然后在 build 目录下 make & make install

10. .ssh 文件权限问题

.ssh 文件夹 和 authorized_keys 文件必须满足一定的权限才行。

1
2
chmod 600 .ssh/authorized_keys
chmod 700 .ssh

11. Linux 设置最大可打开文件数

查看 ulimit -n

设置 ulimit -n 65535

修改配置:
(1) 打开 /etc/security/limits.conf 添加 username hard nofile 1048576
(2) 打开 /etc/ssh/sshd_config 添加 UsePAM=yes
(3) 打开 /etc/pam.d/sshd 添加 session required pam_limits.so

如果无法生效,可以先切换到root用户,再切换回来

12. 修改 huge page size 为 1GB

(1) 追加 default_hugepagesz=1G hugepagesz=1G 到 /etc/default/grub 里的变量 GRUB_CMDLINE_LINUX 中,
(2) 运行 grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
(3) reboot

13. 关闭超线程

echo off > /sys/devices/system/cpu/smt/control

14. disable CPU

echo 0 > /sys/devices/system/cpu/cpu1/online

lscpu 可以查看 CPU 的具体信息

Neo4j 介绍(一):安装

March 21st 2019 at 18:35

这里主要介绍 neo4j 的源码安装,在 IDEA 中修改和启动。

1. 安装 IntelliJ IDEA

打开 IDEA 官网 https://www.jetbrains.com/idea/ 下载源码

下载完成后解压到 /opt 下:

1
sudo tar -zxvf ideaIU-2016.3.3-no-jdk.tar.gz -C /opt

进入到源码目录: cd /opt/idea-xxx/bin

终端输入 ./idea.sh 进行安装。

社区版的不用激活。旗舰版的需要激活:

先修改 host 文件,添加: 0.0.0.0 account.jetbrains.com
0.0.0.0 www.jetbrains.com

然后使用使用激活码:

1
K71U8DBPNE-eyJsaWNlbnNlSWQiOiJLNzFVOERCUE5FIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInByb2R1Y3RzIjpbeyJjb2RlIjoiSUkiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJSUzAiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJXUyIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IlJEIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiUkMiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJEQyIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IkRCIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiUk0iLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJETSIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IkFDIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiRFBOIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiR08iLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJQUyIsInBhaWRVcFRvIjoiMjAxOS0wNS0wNCJ9LHsiY29kZSI6IkNMIiwicGFpZFVwVG8iOiIyMDE5LTA1LTA0In0seyJjb2RlIjoiUEMiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifSx7ImNvZGUiOiJSU1UiLCJwYWlkVXBUbyI6IjIwMTktMDUtMDQifV0sImhhc2giOiI4OTA4Mjg5LzAiLCJncmFjZVBlcmlvZERheXMiOjAsImF1dG9Qcm9sb25nYXRlZCI6ZmFsc2UsImlzQXV0b1Byb2xvbmdhdGVkIjpmYWxzZX0=-Owt3/+LdCpedvF0eQ8635yYt0+ZLtCfIHOKzSrx5hBtbKGYRPFDrdgQAK6lJjexl2emLBcUq729K1+ukY9Js0nx1NH09l9Rw4c7k9wUksLl6RWx7Hcdcma1AHolfSp79NynSMZzQQLFohNyjD+dXfXM5GYd2OTHya0zYjTNMmAJuuRsapJMP9F1z7UTpMpLMxS/JaCWdyX6qIs+funJdPF7bjzYAQBvtbz+6SANBgN36gG1B2xHhccTn6WE8vagwwSNuM70egpahcTktoHxI7uS1JGN9gKAr6nbp+8DbFz3a2wd+XoF3nSJb/d2f/6zJR8yJF8AOyb30kwg3zf5cWw==-MIIEPjCCAiagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE1MTEwMjA4MjE0OFoXDTE4MTEwMTA4MjE0OFowETEPMA0GA1UEAwwGcHJvZDN5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQC9WZuYgQedSuOc5TOUSrRigMw4/+wuC5EtZBfvdl4HT/8vzMW/oUlIP4YCvA0XKyBaCJ2iX+ZCDKoPfiYXiaSiH+HxAPV6J79vvouxKrWg2XV6ShFtPLP+0gPdGq3x9R3+kJbmAm8w+FOdlWqAfJrLvpzMGNeDU14YGXiZ9bVzmIQbwrBA+c/F4tlK/DV07dsNExihqFoibnqDiVNTGombaU2dDup2gwKdL81ua8EIcGNExHe82kjF4zwfadHk3bQVvbfdAwxcDy4xBjs3L4raPLU3yenSzr/OEur1+jfOxnQSmEcMXKXgrAQ9U55gwjcOFKrgOxEdek/Sk1VfOjvS+nuM4eyEruFMfaZHzoQiuw4IqgGc45ohFH0UUyjYcuFxxDSU9lMCv8qdHKm+wnPRb0l9l5vXsCBDuhAGYD6ss+Ga+aDY6f/qXZuUCEUOH3QUNbbCUlviSz6+GiRnt1kA9N2Qachl+2yBfaqUqr8h7Z2gsx5LcIf5kYNsqJ0GavXTVyWh7PYiKX4bs354ZQLUwwa/cG++2+wNWP+HtBhVxMRNTdVhSm38AknZlD+PTAsWGu9GyLmhti2EnVwGybSD2Dxmhxk3IPCkhKAK+pl0eWYGZWG3tJ9mZ7SowcXLWDFAk0lRJnKGFMTggrWjV8GYpw5bq23VmIqqDLgkNzuoog==

激活可以参考:https://blog.csdn.net/qq_35246620/article/details/80522720
https://www.douban.com/note/671690598/
https://guobinhit.blog.csdn.net/article/details/89040919

2. 安装 jdk

选择要安装 java 的位置,如 /usr/ 目录下,新建java文件夹(mkdir java)

下载 jdk 文件到 /usr/java

解压:tar -zxvf jdk-xxx.tar.gz

配置环境变量,打开 /etc/profile,最后面添加如下内容:

1
2
3
4
JAVA_HOME=/usr/java/jdk-xxxxx
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

刷新环境变量:source /etc/profile

验证是否安装成功:java -version

3. 安装 maven

下载源码 apache-maven-xxx-bin.tar.gz

解压: tar zxvf apache-maven-xxx-bin.tar.gz

移动: sudo mv apache-maven-xxx /opt/maven/

配置环境变量,在 /etc/profile 中添加:

1
2
3
export M2_HOME=/opt/maven/apache-maven-xxx
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

刷新环境变量: source /etc/profile

测试:mvn -version

4. 安装 Neo4j

参考:https://blog.csdn.net/wgangyiii/article/details/79150315

(1) 从 github 下载源码: https://github.com/neo4j/neo4j/

(2) 进入源码目录执行:mvn clean install
执行 mvn clean install 进行编译导包,如果只使用该命令,则会进行测试代码,是一个非常耗费时间的过程,所以推荐使用 mvn clean install -DskipTest 该命令的意思是不执行测试直接导包编译。使用 -DskipTests 表示不执行测试用例,但编译测试用例类生成相应的 class 文件至 target/test-classes下。使用 -Dmaven.test.skip=true 表示不执行测试用例,也不编译测试用例类。

经常会有一些奇怪的错误,尝试不同的安装命令:

1
2
3
4
mvn clean install
mvn clean install -DskipTest
mvn clean install -Dmaven.test.skip=true
mvn clean install -DskipTest -DskipBrowser -DfullBuild

有些时候莫名其妙就有用了,说不出来为啥。

(3) 解压编译文件:
编译完成后进入 packaging/standalone/target 里面会有编译好的项目压缩包,名为 neo4j-community-3.5.4-SNAPSHOT-unix.tar.gz 和 neo4j-community-3.5.4-SNAPSHOT-windows.zip,.tar 是面向 ubuntu 系统的,.zip是面向 windows 系统的,执行解压。

(4) 运行
进入解压后的文件夹,运行 bin/neo4j start

浏览器输入 http://localhost:7474 可以看到显示界面。

5. 在 IDEA 中导入 neo4j

IDEA 中导入项目。main 函数在 community/server/src/main/java/org/neo4j/server 中的 CommunityEntryPoint 类中。

配置 application 运行参数:

1
2
3
4
5
Main class: org.neo4j.server.CommunityEntryPoint
Program arguments: -server --home-dir= xxxx --config-dir=xxxx
Working direction: neo4j-3.5
Use classpath of module: neo4j-community-standalone
JRE: /usr/java/jdk1.8.0_201/jre

该 main 函数需要两个参数,一个是 home-dir, 这是存放数据库等文件的目录,可以自己设置一个文件夹。另一个是 config-dir, 这个是配置文件所在的目录,默认的配置文件是 neo4j.conf, 上一步解压的 neo4j-community-3.5.4-SNAPSHOT 的 conf 目录下就有配置文件 neo4j.conf, 那么 config-dir 参数可以设置为 neo4j-community-3.5.4-SNAPSHOT/conf

配置文件的设置可以参考官方文档: https://neo4j.com/docs/operations-manual/current/reference/configuration-settingshttps://neo4j.com/docs/operations-manual/current/configuration/

然后运行 community/server/src/main/java/org/neo4j/server 中的 CommunityEntryPoint

有可能会出现报错,提示某些符号找不到(主要是提示scala代码里声明的类找不到),但是在 neo4j 目录下运行 mvn clean 之后,再用 IDEA 编译运行,就不报错了。

有时候还会提示找不到某些类,解决办法,通过搜索找到该类所在的文件,发现该文件左(右)下角有个黄(红)色的j,如果是这样,那么在 file 里打开project structure 找到 modules,找到该文件对应的 modules 其中有个 sources,点击右边第一个×,然后点击下面的 add content root 按钮,重新选择该 modules 的代码。

matlab 画图(十): 分组和堆叠的条形图

January 13th 2019 at 13:20

可以通过在Y数据中添加零行来自行完成,无论您希望将条组分开,然后相应地修改x轴 tick marks 和 tick labels.这是一个例子:

https://codeday.me/bug/20190119/550326.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14

Y = [1 2 3; ... %# Sample data
2 3 4; ...
3 4 5; ...
4 5 6; ...
5 6 7; ...
6 7 8; ...
7 8 9; ...
8 9 10; ...
9 10 11];
newY = reshape([reshape(Y,3,[]); zeros(1,numel(Y)/3)],[],3) %# Add zeroes
%# for spacing
bar(newY,'stacked'); %# Create a stacked histogram
set(gca,'XLim',[0 12],'XTick',2:4:10,'XTickLabel',1:3); %# Modify axes


❌