数据库
littleZhuHui
程序员
展开
-
MySQL生成Sequence的一种改进方法
网上mysql生成Sequence的方法不少,最常见的方法是:1,创建一张表用来保存序列值CREATE TABLE `t_sequence` ( `sequence_name` varchar(64) CHARACTER SET utf8 NOT NULL COMMENT '序列名称', `value` int(11) DEFAULT NULL COMMENT '当前值', P...原创 2018-12-19 20:23:35 · 1829 阅读 · 1 评论 -
sqlite源码分析之路(二) 数据库文件格式探索(7) 索引B树叶子节点分析
引子书接上回,前面分析了三种B树节点的结构,现在还剩下最后一种。说实话,我是宁愿写代码也懒得写文档的人。因为写代码有编译器帮你检查错误 ,写文档就只有自已检查错误。而我又经常犯一些超低级错误,写在文档里让人看见,真是很没有面子。可是现在能坐在电脑前的时间越来越少,再不抓紧时间写点东西。以后就是想写,也是有心无力了。树欲静而风不止,人欲睡而电不停,奈何!奈何!正式开始上一篇文章说到只要在数据库...原创 2019-06-24 22:22:21 · 402 阅读 · 0 评论 -
一种快速导入Excel数据到mysql数据库的办法
基本需求导入Excel表格中的数据到mysql数据库是一种常见需求。导入的方法有很多。今天介绍一种用python导入excel数据到mysql的方法。它的好处是执行效率高,导入数据量大。实施步聚1,通过python 将excel文件转换为sql插入语句组成的文本文件。为了实现这个功能用到了一个读取excel数据的python模块xlrd。2.命令行上执行 mysql命令,运行第一步生成的s...原创 2019-07-10 23:16:34 · 841 阅读 · 0 评论 -
一种快速导出mysql数据库到Excel的办法
基本需求将数据从mysql数据库导出到excel中是一种很常见的需求。导出的方法也很多。本文介绍一种用python导出mysql数据的法。这种办法的好处是:导出效率高,导出数据量大,导出效率与mysql原生导出文本文件的效率基本相当。实施步骤1.用python连接mysql数据库,执行预先准备好的sql语句,取出要导出的数据到python的列表对象中。这一步要用到操作mysql的python...原创 2019-07-11 10:29:51 · 499 阅读 · 0 评论 -
php7.2连接sqlserver2017并调用存储过程
php与mysql的配置很常见,但偶尔需要用php连接sqlserver时,就要稍费一些手脚。基本配置:Windows 10 企业版;Apache2.4;php7.2.4;SQL Server 2017;按照网上太多数的文献,要先从微软官网上下载 用于连接 SQL Server 的php扩展。网址是:https://www.microsoft.com/en-us/download/deta...原创 2019-07-23 20:14:10 · 1101 阅读 · 0 评论 -
网络斗地主游戏的完整设计与实现(一)项目的基本结构
引言开发一个完整的游戏程序需要做的工作不少,本系列介绍一个较为完整的网络斗地主游戏的设计与实现过程。游戏基本界面项目基本结构项目分成两个主要部分,前台浏览器应用与后台数据库整个项目由javascript +php+ sqlserver构成;但其中php代码只起一个简单的转发作用,前台界面由javascript代码完成,服务器端逻辑由存储于sqlserver中的T-Sql代码实现。项目的...原创 2019-07-24 19:58:18 · 5129 阅读 · 0 评论 -
网络斗地主游戏的完整设计与实现(三)入口存储过程详解,理解动态调用存储过程的原理
引言在前一篇文章中说到了一个枋心技术路线,就是在js代码中通过ajax请求调用sqlserver中的存储过程。下面对这一个调用过程在数据库端的工作过程做一个较为详细的说明。因为这里用到了在存储过程中动态调用其它存储过程的技术,所以值得细讲一下。项目的源码可在CSDN资源中下载入口存储过程现在很多网络应用都在使用单入口技术。在本项目中通过一个入口存储过程,实现了单入口功能。下面看一下这个入...原创 2019-07-29 22:03:40 · 407 阅读 · 0 评论 -
网络斗地主游戏的完整设计与实现(四)游戏状态更新机制与心跳机制
引言在前一篇文章中讲解了通过入口存储过程动态调用业务过程的原理。下面来说明如何实现游戏状态的更新。项目的源码可在CSDN资源中下载实现原理由于http协议是无状态的请求响应式协议,用户可以主动向服务器发起请求,得到回复。但如果服务器状态发生了变化,却不能直接地推送消息给用户。在web应用中,消息推送是一个长期讨论的话题。现在已经有了比较成熟的解决方案,比如websocket。不过本项目...原创 2019-08-03 20:19:48 · 625 阅读 · 0 评论 -
介绍一本Mysql运维方面的图书
讲Mysql的图书不少原创 2019-07-27 21:55:57 · 356 阅读 · 0 评论 -
网络斗地主游戏的完整设计与实现(五)随机发牌功能的实现
在扑克牌游戏中,生成一幅随机打乱的牌型,然后分发给玩家,是必须要实现的基本功能。基本原理肯定是使用随机数,但是只有随机数达不到效果,因为是要随机地打乱顺序,而不是仅仅生成54个随机数。因为随机数有可能是重复的。下面是用sql-server 的存储过程实现的随机发牌功能:CREATE procedure dealCards(@deskID int,...原创 2019-08-07 22:04:35 · 975 阅读 · 0 评论 -
SQL Server 函数实现字符串分割功能
字符串切分功能在许多语言中都有现成的函数可以调用现在用T-SQL的表值函数实现一下:CREATE function split(@strList varchar(500),@deli char(1) )returns @result table( obj varchar(500))asbegindeclare @tmp table(idx int,chr c...原创 2019-08-19 21:30:07 · 1079 阅读 · 0 评论 -
对关系性数据库中索引策略的思考
关系性数据库的数据表与索引紧密相连能否将数据存储服务与索引服务分离开,也就是说将索引服务独立出来,用消息机制在两者之间进行沟通关系数据库的索引为主动索引,建立了就要主动维护,所以不能建得太多,比如mysql数据库的表上,索引数目就有上限64能否做按需索引,被动索引,懒索引,不限制索引的数目...原创 2019-08-20 22:56:13 · 95 阅读 · 0 评论 -
sqlite源码分析之路(二) 数据库文件格式探索(6) 索引B树内部节点分析
引子书接上回。前面了解了数据表B树的内部节点与叶子节点的结构。接下来要分析索引B树的节点结构。下面先看一下索引B树的内部节点。数据表B树与数据结构中的B+树对应,索引B树与数据结构中的B树对应。B树与B+树的最大不同在于,在B树的内部节点上也存放有记录数据。在接下来的分析中,咱们可以验证这一点。...原创 2019-06-24 21:58:09 · 491 阅读 · 0 评论 -
sqlite源码分析之路(二) 数据库文件格式探索(5) 数据表B树内部节点分析
引子书接上回,前面看了数据表B树叶子节点。接下来要看一看数据表B树内部节点。数据表B树内部节点是4种B树节点中结构最简单的,为什么?它没有payload。它里面的单元不包含具体的记录数据,只包含关键值与左孩子指针,在逻辑上形成树形结构。正式开始要想得到一个数据表B树内部节点,最简单的办法就是向sqlite数据表中多插入一些数据,当数据在一页内放不下时,内部节点就出现了。B树的深度也就增长了...原创 2019-06-24 21:27:37 · 298 阅读 · 0 评论 -
sqlite源码分析之路(二) 数据库文件格式探索(4) 数据表B树叶子节点分析
引子书接前回,上次分析了B树节点的页头,不论是数据表对应的B+树,还是索引对应的B树,树节点分成两大类。一类是叶子节点,一类是内部节点。叶子节点的页头大小是8个字节,内部节点的页头大小是12个字节。为什么?内部节点要在页头的最后面加上4个字节存放最右孩子的页号。所以多出来4个字节。4个字节可以看作一个32的无符号整数。所以sqlite数据库中最多有2^32 - 1页。如果一页是1k.则数据库...原创 2019-06-24 19:01:44 · 468 阅读 · 0 评论 -
mysql数据库多个会话在慢查询中的表现
通过故意构造一些慢查询,看看两个会话之间的互相影响。 一 测试的初始环境创建一个测试表CREATE TABLE `test1` ( `id` int(11) DEFAULT NULL, `n1` varchar(255) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1; 一开始表中有5行数据:1 ...原创 2018-12-20 14:08:33 · 482 阅读 · 0 评论 -
一次B/S架构系统的调优实践
需调优的系统采用B/S架构,apache2+php5.6+thinkphp3.2 +mysql5.6+redis 在开发阶段没有出现什么性能问题,但在上线一段时间后,随着在线用户数的增加,其实也不多(应该不到20人同时使用),就开始频繁地报告页面卡顿,有时甚至出现卡死。 系统部署时web服务器与mysql数据库服务器是分开的两台虚拟机,都是windows server 20...原创 2018-12-27 22:22:54 · 808 阅读 · 0 评论 -
一种按需索引的数据库系统的设计与实现之一: adoSpace初步设想
这是adosSpace系列的第一篇,相当于个人工作的笔记。错误在所难免,若有有高人批评指正,不胜感激。1 懒索引的设想:把索引的创建,维护交给后台自动,并发地完成,而不是由人来完成,索引的数量完全是按需决定,不用人去考虑建立索引的成本索引的建立是懒的,直到一次查询请求触发了对索引的需求后,才会边进行全表扫描取数据边建立索引,既然要进行全表扫描取数据,何不顺手把索引也建立了呢?不用担...原创 2018-12-25 20:33:12 · 179 阅读 · 0 评论 -
mysql表上索引数目有上限
在考虑对redis中的数据建索引时,索引服务器的实现有两个备选项:mysql与sqlite。mysql的问题就是一个表中索引的最大数目是64,这样如果所有的字段都建索引,则一个表中的字段数不应超过64.如果用sqlite做索引服务,可考虑用sqlite的一个库表示一张表,库中的一个表表示一个字段。但是表的连接就会变成两个库中表的连接,这在sqlite来说,可以用附加,但也有限制,并且不能做连...原创 2018-12-25 20:42:56 · 8516 阅读 · 0 评论 -
用mysql存储过程实现的多用户并发订房业务,避免出现超订
本实验用mysql模拟一个多用户在线的订房业务,其实只要是有人数限制的订购活动,其主要业务逻辑都是相似的,所以这个实验对于订房,订票等等竟争性资源的访问都有一定的启发作用。基础数据准备:新建一个room表,每个房间中可住人数,已住人数,模拟订房功能。CREATE TABLE `room` ( `id` int(11) NOT NULL AUTO_INCREMENT,...原创 2019-06-12 14:24:29 · 777 阅读 · 0 评论 -
sqlite源码分析之路(二) 数据库文件格式探索(1) 数据库文件头分析
要深入了解sqlite数据库,数据库文件的存放格式必须熟悉原创 2019-06-22 10:48:15 · 983 阅读 · 0 评论 -
sqlite源码分析之路(一) 分散文件的源码编译成easySqlite
这两天下了决心,要好好地看一下sqlite的源码。于是从官网上下载了源码。很认真地看了,但看不下去。为什么?这已经是一个很成熟的项目,从2000年的第1版到2019年的3.29.0版,进化得已经很成熟,代码量也有几十万行了。光用文本工具看源代码是看不下去了。 想到的办法是先看官网上的文档(https://www.sqlite.org/docs.html)。sq...原创 2019-06-16 12:24:38 · 1707 阅读 · 0 评论 -
sqlite源码分析之路(二) 数据库文件格式探索(3) B树页头分析
Btree页是sqlite数据库中最重要的页类型。每个Btree由4部分组成1.页头2.单元指针数组3.未分配空间4.单元内容区下面先来分析页头内容:bTreeInt.h中说明如下:** The page headers looks like this:**** OFFSET SIZE DESCRIPTION** 0 1 Fla...原创 2019-06-24 17:08:57 · 710 阅读 · 0 评论 -
sqlite源码分析之路(二) 数据库文件格式探索(2) 变长整型分析
sqlite中大量使用了变长整形,为了分析sqlite的数据文件格式 ,这是一个绕不过去的点。变长整数由1至9个字节组成,如果整形值比较小,占用的字节数就少,整形值比较大,占用的字节数就多。这实际上是一种压缩编码技术。变长整型的每个字节的低7位有效,第8位是标志位。在组成可变长整数的各字节中,前面字节(整数的高位字节)的第8位置1,只有最后一个字节的第8位置0,表示整数结束。觉没觉得得和c语言的...原创 2019-06-22 14:10:08 · 526 阅读 · 0 评论 -
sqlite源码分析之路(二) 数据库文件格式探索(8)小结篇
小结书接上回,前面几篇给sqlite的B树页数据格式做了一些分析,接下来准备转到源码的阅读上去。其实数据库上还有一些页格式没有分析到,这些就留到后面去做。在做源码阅读之前,把这一块的工作做一个小结。...原创 2019-06-26 10:05:11 · 239 阅读 · 0 评论 -
对mysql数据库分库分表的一些思考
对一个应用系统而言,在运行一段时间,用户数,数据量都增长到一定规模之后,数据库往往就为成为系统的瓶颈。因此数据库的分库分表不应等到问题已经严重到不可收拾了再来考虑。最好是在数据库的规划之初就做好考虑。数据库分库分表的第一条原则就是事前规划胜过事后补救数据库分库分表针对的是随时间增长迅速的数据表,所以按时间单位分库分表是最基本也是最有效的办法。数据库分库分表的第二条原则就是数据产生的的时间范围...原创 2019-08-21 21:46:11 · 435 阅读 · 1 评论