引言 数据库.操作系统和编译器并称为三大系统,可以说是整个计算机软件的基石.其中数据库更靠近应用层,是很多业务的支撑.这一领域经过了几十年的发展,不断的有新的进展. 很多人用过数据库,但是很少有人实现过一个数据库,特别是实现一个分布式数据库.了解数据库的实现原理和细节,一方面可以提高个人技术,对构建其他系统有帮助,另一方面也有利于用好数据库. 研究一门技术最好的方法是研究其中一个开源项目,数据库也不例外.单机数据库领域有很多很好的开源项目,其中 MySQL 和 PostgreSQL 是其中知名度…
数据库.操作系统和编译器并称为三大系统,可以说是整个计算机软件的基石.其中数据库更靠近应用层,是很多业务的支撑.这一领域经过了几十年的发展,不断的有新的进展. 很多人用过数据库,但是很少有人实现过一个数据库,特别是实现一个分布式数据库.了解数据库的实现原理和细节,一方面可以提高个人技术,对构建其他系统有帮助,另一方面也有利于用好数据库. 研究一门技术最好的方法是研究其中一个开源项目,数据库也不例外.单机数据库领域有很多很好的开源项目,其中 MySQL 和 PostgreSQL 是其中知名度最高的…
原文地址:https://pingcap.com/blog-cn/tidb-internal-1/ 引言 数据库.操作系统和编译器并称为三大系统,可以说是整个计算机软件的基石.其中数据库更靠近应用层,是很多业务的支撑.这一领域经过了几十年的发展,不断的有新的进展. 很多人用过数据库,但是很少有人实现过一个数据库,特别是实现一个分布式数据库.了解数据库的实现原理和细节,一方面可以提高个人技术,对构建其他系统有帮助,另一方面也有利于用好数据库. 研究一门技术最好的方法是研究其中一个开源项目,数据库也…
任何一个复杂的系统,用户感知到的都只是冰山一角,数据库也不例外. 前两篇文章介绍了 TiKV.TiDB 的基本概念以及一些核心功能的实现原理,这两个组件一个负责 KV 存储,一个负责 SQL 引擎,都是大家看得见的东西.在这两个组件的后面,还有一个叫做 PD(Placement Driver)的组件,虽然不直接和业务接触,但是这个组件是整个集群的核心,负责全局元信息的存储以及 TiKV 集群负载均衡调度. 本篇文章介绍一下这个神秘的模块.这部分比较复杂,很多东西大家平时不会想到,也很少在其他文章…
在这我们将关系模型简单理解为 Table 和 SQL 语句,那么问题变为如何在 KV 结构上保存 Table 以及如何在 KV 结构上运行 SQL 语句. 假设我们有这样一个表的定义: CREATE TABLE User { ID int, Name varchar(20), Role varchar(20), Age int, PRIMARY KEY (ID), Key idxAge (age) }; SQL 和 KV 结构之间存在巨大的区别,那么如何能够方便高效地进行映射,就成为一个很重要的…
原文地址:https://pingcap.com/blog-cn/tidb-internal-3/ 为什么要进行调度 先回忆一下第一篇文章提到的一些信息,TiKV 集群是 TiDB 数据库的分布式 KV 存储引擎,数据以 Region 为单位进行复制和管理,每个 Region 会有多个 Replica(副本),这些 Replica 会分布在不同的 TiKV 节点上,其中 Leader 负责读/写,Follower 负责同步 Leader 发来的 raft log.了解了这些信息后,请思考下面这些…
原文地址:https://pingcap.com/blog-cn/tidb-internal-2/ 关系模型到 Key-Value 模型的映射 在这我们将关系模型简单理解为 Table 和 SQL 语句,那么问题变为如何在 KV 结构上保存 Table 以及如何在 KV 结构上运行 SQL 语句. 假设我们有这样一个表的定义: CREATE TABLE User { ID int, Name varchar(20), Role varchar(20), Age int, PRIMARY KEY…
/*---------最新前三篇文章高亮显示-------------*/ function latest(){ var color_arr=new Array( "blue", //第1行颜色,以此类推 "orange", "green", "#999" ); start=1; //从第几行开始,默认从第1行 var classdiv='.calssTitle'; //上一个id,此div必须定义 var colornum=…
看下成果 ps:纯天然h5,绝不添加任何添加剂(css)以及化学成分(js)(<( ̄ ﹌  ̄)我就是喜欢纯天然,不接受任何反驳) 关于本文 用原生的php和html做了一个登陆注册,大概是可以窥见一般php开发的样子了.不过,low的地方区别提前说一下: 这个是多入口,一般程序都是单入口,单入口就是统一通过index.php进入,然后再引入其他文件,调用其代码,多入口就是每次通过不同文件进入(比如一会展示的login.php和register.php) 保留登陆信息用的是session,现在普遍…
一.mysql架构 mysql是一个单进程多线程架构的数据库. 二.存储引擎 InnoDB: 支持事务 行锁 读操作无锁 4种隔离级别,默认为repeatable 自适应hash索引 每张表的存储都是按主键的顺序记性存放 支持全文索引(InnoDB1.2.x - mysql5.6) 支持MVCC(多版本并发控制)实现高并发 MyISAM: 不支持事务 表锁 支持全文索引 三.InnoDB体系架构 1.后台线程 Master Thread 负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性 IO…
Mysql技术内幕——InnoDB存储引擎 http://jingyan.baidu.com/article/fedf07377c493f35ac89770c.html 一.mysql体系结构和存储引擎 1.1.数据库和实例的区别 数据库:物理操作系统或其他形式文件类型的集合.在mysql下数据库文件可以是frm,myd,myi,ibd结尾的文件. 数据库实例:由数据库后台进程/线程以及一个共享内存区组成.数据库实例才是真正用来操作数据库文件的. mysql数据库是单进程多线程的程序,与sql…
mysql技术内幕InnoDB存储引擎这本书断断续续看了近10天左右,应该说作者有比较丰富的开发水平,在源码级别上分析的比较透彻.如果结合高可用mysql和高性能mysql来看或许效果会更好,可惜书太厚,还在啃当中,希望能早点读完……. 应该说与oracle相比,mysql数据库还是相对比简单,以后还是深入学习下oracle去. 搞数据库也比搞应用运维相对单纯,不用知道各种应用架构,不用写各种脚本工具,只要掌握这个软件就足够了.当然希望自己的知识还是全面一些好.…
大约RAC下一个spfile分析_整理在_2014.4.17 说明:文章来源于网络 第一篇:RAC下SPFILE文件改动 在RAC下spfile位置的改动与单节点环境不全然一致,有些地方须要特别注意,否则可能改动会失败. 以下用一个样例说明:SPFILE放在ASM中一个不对的文件夹(+ARCH)中,如今想把它放在另外一个文件夹(+DBSYS)下. 下面是详细步骤: 1. 原spfile位置 SQL> show parameter spfile NAME TYPE VALUE ----------…
最近在做程序异常时堆栈信息获取相关工作,上一篇文章成功的在程序creash时写下了dump文件,而有些情况写dump文件是 不可以的,比如在jni开发时,C++只做底层处理,而整个项目是android工程,这个时候dump文件没有了优势,那么只能在程序 creash时把内存信息打印出来,获取输出到文件中.    下面讲述下我在做堆栈信息获取时的一些经验: 文章1:在Windows下如何在程序中获得当前调用栈信息文章2:让程序在崩溃时体面的退出之Dump文件文章3:让程序在崩溃时体面的退出之Cal…
<200行代码,7个对象--让你了解ASP.NET Core框架的本质>让很多读者对ASP.NET Core管道有深刻的理解,知道了ASP.NET Core框架针对每个请求的处理流程.在过去很长一段时间中,有很多人私信给我:能否按照相同的方式分析一下MVC框架.真实的MVC框架其实很复杂,所以我们依然按照类似的方式大刀阔斧地"砍掉"了很多"细枝末节",利用一个Mini版本的模拟框架将真实ASP.NET Core MVC最核心的部分展示出来.和Mini版本…
第1章  MySQL体系结构和存储引擎 1.3 MySQL存储引擎 数据库和文件系统最大的区别在于:数据库是支持事务的 InnoDB存储引擎: MySQL5.5.8之后默认的存储引擎,主要面向OLTP(联机事务处理,面向基本的.日常的事务处理) 支持事务,支持外键.支持行锁(有的情况下也会锁住整个表).非锁定读(默认读取操作不会产生锁) 通过使用MVCC来获取高并发性,并且实现sql标准的4种隔离级别,默认为可重复读级别 使用一种被称成next-key locking的策略来避免幻读(phant…
一.存储引擎 1.InnoDB引擎 设计目标是面向在线事务(OLTP)处理的应用. 支持事务.行级锁.通过多版本并发控制(MVCC)支持高并发.提供一致性非锁定读.next-key locking避免幻读.主键聚集索引 2.MyISAM引擎 设计目标是面向OLAP应用. 不支持事务.不支持行锁.表锁设计.支持全文索引 3.其他存储引擎 略 二.InnoDB体系结构 1.线程模型 InnoDB存储引擎是多线程模型,后台有多个不同的线程,用于处理不同的任务. Master Thread:核心线程,将…
醉了,windows下宏定义了很多char类型 LPTSTR .今天,直接使用,qt报错,真TM费事. 将“CPU”转化为wcha_t * QString str = "CPU"; const wchar_t * str_cpu = reinterpret_cast<const wchar_t *>(str.utf16());//char * 转换为 wchar_t * 类型 下面这篇blog很好 QT QString, wchar_t *, TCHAR, CString和…
本文适合阅读用户 有其他语言基础的童鞋 看完w3cschool语法教程来回顾一下的童鞋(传送门,想全面看一下php语法推荐这里) 毫无基础然而天资聪慧颇有慧根(不要左顾右看说的就是你,老夫这里有一本<php从入门到放弃>,观你根骨清奇10两银子卖给你如何) 看完本文后你会收获到什么 php的变量的定义,使用 函数的定义,使用,传递参数 数组的定义,调用,常用方法,使用场景 php中循环,判断,选择结构的语法 类的定义,成员变量和成员函数的定义和使用 相信我,认真看完本文,你就已经掌握了php常…
前言 今天讲一下php在windows,mac,linux上的集成环境搭建,目标是简单快速,环境这个事得对号入座,windows用phpstudy,mac用mamp,linux用lnmp一键安装,直接跳转对应的地方看就好了. 另:本文目标是迅速建立集成环境用来开发,如果想要分开一点点搭建,自行google百度就好了. windows之phpstudy windows推荐直接phpsudy,简单方便,一键式安装. 下载地址 http://phpstudy.php.cn/ 下载完是一个压缩包,解压选…
C/C++程序中,locale(即系统区域设置,即国家或地区设置)将决定程序所使用的当前语言编码.日期格式.数字格式及其它与区域有关的设置,locale设置的正确与否将影响到程序中字符串处理(wchar_t如何输出.strftime()的格式等).因此,对于每一个程序,都应该慎重处理locale设置. C locale和C++ locale是独立的.C locale用setlocale(LC_CTYPE, “”)初始化,C++ locale用std::locale::global(std::lo…
http://www.bubuko.com/infodetail-425274.html//有图片 http://www.cnblogs.com/jys509/p/4839803.html http://blog.csdn.net/zhangjunjian127/article/details/47954981 //较详细 http://www.cocoachina.com/ios/20151023/13869.html// iOS开发必备--环境变量配置(Debug & Release) ht…
BOOL SaveHwndToBmpFile(HWND hWnd, LPCTSTR lpszPath) { HWND hDesktop = ::GetDesktopWindow(); ASSERT(hDesktop); if(NULL == hWnd) { hWnd = hDesktop; } RECT rect; ::GetWindowRect(hWnd, &rect); int nWidht = rect.right - rect.left; int nHeight = rect.botto…
http://blog.sina.com.cn/s/blog_a6fb6cc90101i8it.html http://blog.sina.com.cn/s/blog_a6fb6cc90101hhse.html http://blog.sina.com.cn/s/blog_a6fb6cc90101dd5u.html…
1.有向图的拓扑排序https://blog.csdn.net/wp1603710463/article/details/50900892 2. Python中MRO算法 http://mp.weixin.qq.com/s?src=3&timestamp=1523079771&ver=1&signature=j2kltfY0GU7qGMzmSRTSnhw3mcixlpiIwVgpAwBc1nsv325lBZFMjrFvqFTttRKGwchZlt4bZyQrVd8QnsR0grpA…
构成MySQL数据库和InnoDB存储引擎表的文件类型有: 参数文件:MySQL实例运行时需要的参数就是存储在这里. 日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件. socket文件:用于套接字连接. pid文件,MySQL实例的进程ID文件. MySQL表结构文件:用来存放MySQL表结构定义文件. 存储引擎文件:存储引擎自己用来记录数据的文件,真正地存储记录和索引等数据. 1-5都是MySQL的五年,只有6是存储引擎自己的文件. 1.参数文件 作用: MySQL启动的时候,…
表 原文:http://yingminxing.com/mysql%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95innodb%E5%AD%98%E5%82%A8%E5%BC%95%E6%93%8E%EF%BC%8D%E8%A1%A8%E7%B4%A2%E5%BC%95%E7%AE%97%E6%B3%95%E5%92%8C%E9%94%81/ 4.1.innodb存储引擎表类型 innodb表类似oracle的IOT表(索引聚集表-indexorganized table…
表 4.1.innodb存储引擎表类型 innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示的定义主键则innodb如按照如下方式选择或者创建主键.首先表中是否有唯一非空索引(unique not null),如果有则该列即为主键.不符合上述条件,innodb存储引擎会自动创建一个6字节大小的指针,rowid(). 4.2.innodb逻辑存储结构 innodb的逻辑存储单元由大到小分别是…
索引概述 索引太多可能会降低运行性能,太少就会影响查询性能. 最开始就要在需要的地方添加索引. 常见的索引: B+树索引 全文索引 哈希索引 B+树索引 B+树 所有的叶子节点存放完整的数据,非叶子节点就是索引节点,只存放索引信息. 1. 插入操作 插入操作需要考虑节点是否被占满了,如果满了,久需要生成新节点. 叶节点和非叶节点都没满:直接插入到叶子节点. 叶节点满了,非叶节点没满:根据大小拆分叶子节点变成两个,再将中间节点放到上面的非叶节点,然后再插入数值. 都满了:先拆分叶子节点,再拆分非叶…
1.概述 是一个高性能.高可用.高扩展的存储引擎. 2.InnoDB体系架构 InnoDB存储引擎主要由内存池和后台线程构成. 其中,内存池由许多个内存块组成,作用如下: 维护所有进程和线程需要访问的内部数据结构. 缓存磁盘上的数据,提高处理器读取速度,当数据被修改的时候也是先修改这里的数据,再被后台线程写到内存上去. 重做日志(redo log)缓冲. 后台线程的主要作用: 负责刷新内存池中的数据,以保证缓冲池中数据是最近的数据. 将缓冲中的数据刷新到磁盘上. 保证数据库发生异常的时候 ,数据…