数据库资料
zhexiao27
Keep going.
展开
-
数据库时间类型的选择 Datetime 或者 Timestamp
我们平时开发中不可避免的就是要存储时间,比如我们要记录操作表中这条记录的时间、记录转账的交易时间、记录出发时间等等。你会发现这个时间这个东西与我们开发的联系还是非常紧密的,用的好与不好会给我们的业务甚至功能带来很大的影响。所以,我们有必要重新出发,好好认识一下这个东西。1.切记不要用字符串存储日期这种存储日期的方式的优点还是有的,就是简单直白,容易上手。但是,这是不正确的做法,主要会有下面两个问题:字符串占用的空间更大!字符串存储的日期比较效率比较低(逐个字符进行比对),无法用日期相关的 API原创 2020-09-01 17:24:09 · 6548 阅读 · 0 评论 -
MySQL 高级 7大JOIN写法
建表DROP TABLE IF EXISTS `department`;CREATE TABLE `department` ( `id` int(10) DEFAULT NULL, `name` varchar(100) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;/*Data for the table `department` */insert into `department`(`id`,`name`) value.原创 2020-09-01 16:42:04 · 597 阅读 · 0 评论 -
27 备份与恢复
备份/恢复策略1.确定要备份的表的存储引擎是事务型还是非事务型.2.确定使用全备份还是增量备份.全备份的优点是备份保持最新备份,恢复的时候可以花费更少时间,缺点是如果数据量大,将会花费更多时间;增量备份只需要备份每天的增量日志,备份时间少,缺点是恢复的时候需要全备份加上次备份到故障前的所有日志,恢复时间长.3.可以采取复制的方法来做异地备份,但是记住,复制不能代替备份,它对数据库的误操原创 2013-03-28 21:54:09 · 576 阅读 · 0 评论 -
MongoDB权威指南笔记 2 Mongodb入门
Mongodb的基本概念1.文档是Mongodb中数据的基本单元,非常类似于关系数据库管理系统中的行(但是比行要复杂得多)。2.类似地,集合可以被看做是没有模式的表。3.Mongodb的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限。4.Mongodb自带简洁但功能强大的Javascript Shell,这个工具对于管理Mongodb实例和操作数据作用原创 2013-03-28 21:55:08 · 743 阅读 · 0 评论 -
9 MongoDB主从复制和集群
主从复制最基本的设置是建立一个主节点和多个从节点,每个从节点要知道主节点的地址。运行mongod --master就启动了主服务器。运行mongod --slave --source master_address则启动了从服务器,其中master_address就是上面的主节点地址。生产环境下有多台服务器,不过这里我们的例子就在同一机器上试验。1.给主节点建立数据目录,并绑定端口(原创 2013-03-28 21:55:47 · 694 阅读 · 0 评论 -
18 SQL优化--查询优化
优化SQL语句的一般步骤1.通过show status 命令了解各种sql的执行频率在Mysql客户端连接成功后,可以使用show [session | global] status;命令获得服务器状态信息,默认是session。或者在CMD中使用Mysqladmin extended-status;命令获得信息。例如:show status like 'Com_%'; Com原创 2013-03-28 21:53:28 · 541 阅读 · 0 评论 -
22 磁盘IO的问题和数据分布
作为应用系统的持久化层,不管数据库采取了什么样的cache机制,数据最终都是要存在磁盘上.实际上我们对sql优化,数据库对象优化,数据库参数优化以及应用优化等,大部分都是想通过减少或延缓磁盘读写来减轻I/O的压力. 磁盘阵列(RAID)RAID是Redundant Array of Inexpensive Disks的缩写,通常叫做磁盘阵列.RAID是按照一定策略将数据分布到若干物原创 2013-03-28 21:53:55 · 756 阅读 · 0 评论 -
23 应用优化与负载平衡介绍
使用连接池对于访问数据库来说,建立连接的代价比较昂贵.连接池是一个存放连接的池子,再具体一些,我们可以把连接当作对象或设备,统一放在一个池子里面,以前需要直接访问数据库的地方,现在都改为从这个池子里面获取连接来使用. 减少对Mysql的访问1.避免对同一数据做重复检索如先想得到某人的年龄而查询数据库,然后又想得到某人的地址又来查询同一数据库的表,本来一句sql就可以解决,切记不要分原创 2013-03-28 21:53:57 · 490 阅读 · 0 评论 -
24 Mysql高级安装和升级
Mysql安装包比较RPM包:安装简单,路径默认,一台服务器只能安装一个.二进制包:安装简单,路径自定义,灵活性好,一台服务器可以安装多个Mysql;但是性能不如源码编译的好.源码包:最灵活,性能最好,一台服务器可以安装多个Mysql,安装过程复杂,编译时间长. 安装二进制包1.用root登陆操作系统,增加mysql用户和组,数据库安装在此用户下:Shell>原创 2013-03-28 21:54:00 · 583 阅读 · 0 评论 -
30 Mysq Cluster(集群)的概念和架…
Mysql自4.1.x版本开始推出mysql cluster功能,Cluster简单地说就是一组节点的组合.这里的节点是一个逻辑概念,一台计算机上可以存放一个节点,也可以存放多个节点.节点的功能也各不相同,有的用来存储数据(数据节点),有的用来存放表结构(sql节点),有的用来对其他节点进行管理(管理节点).Mysql使用NDB存储引擎来对数据节点的数据进行存储,以前版本的NDB存储引擎只支持原创 2013-03-28 21:54:18 · 479 阅读 · 0 评论 -
25 Mysql中的常用工具
Myisampack(Myisam表压缩工具)Myisampack是一个表压缩工具,可以使用很高的压缩率来对myisam存储引擎的表进行压缩,使得压缩后的表占用比压缩前小得多磁盘空间,但是压缩后的表也将成为一个只读表,不能进行DML操作(如果insert).用法:shell> myisampack [options] filename Mysqladmin(mysql管理工具原创 2013-03-28 21:54:02 · 635 阅读 · 0 评论 -
8 MongoDB的管理
启动和停止MongoDB从命令行启动执行mongodb,启动MongoDB服务器。有很多选项,在命令行启动mongod --help可以查看所有选项。一些主要选项如下:--dbpath指定数据目录,每个mongod进程都需要独立的数据目录,所以要是有3个mongoDB事例,必须要有3个独立的数据目录。当mongod启动的时候会创建mongod.lock文件。 --port原创 2013-03-28 21:55:44 · 608 阅读 · 0 评论 -
The slave I/O thread stops(equal…
在学习replication时遇到了如下问题: slave I/O thread stops(equal MySQL server ids)" title="The slave I/O thread stops(equal MySQL server ids)" style="border-style:initial; border-color:initial; max-width:原创 2013-03-28 21:54:16 · 712 阅读 · 0 评论 -
31 Mysql常见问题和应用技巧
1.忘记Mysql的root密码A.登陆到数据库所在服务器,手工kill掉mysql进程Shell> Kill `cat /mysql-data-direcroty/hostname.pid`其中.pid里面有Mysql服务的进程号.B.使用--skip-grant-tables选项重启mysql服务Shell> mysqld_safe --skip-grant-t原创 2013-03-28 21:54:21 · 583 阅读 · 0 评论 -
安装 cassandra,使用基本的cqlsh
安装> wget http://mirrors.hust.edu.cn/apache/cassandra/3.11.1/apache-cassandra-3.11.1-bin.tar.gz> tar -zxvf apache-cassandra-3.11.1-bin.tar.gzCassandra目录解释bin:一些可执行的命令,包括cqlsh和nodetool。nodetool可以用来检查一个原创 2017-11-13 16:53:32 · 5346 阅读 · 0 评论 -
分布式系统 CAP理论
CAP起源CAP原本是一个猜想,2000年PODC大会的时候大牛Brewer提出的,他认为在设计一个大规模可扩放的网络服务时候会遇到三个特性:一致性(consistency)、可用性(Availability)、分区容错(partition-tolerance)都需要的情景,然而这是不可能都实现的。之后在2003年的时候,Mit的Gilbert和Lynch就正式的证明了这三个特征确实是不可以兼得的。转载 2017-11-10 13:41:09 · 652 阅读 · 0 评论 -
cassandra 架构实现
cassandra 架构所有系统最开始都是centralized。但是有很多缺点,比如单机的处理能力不够。Centralized database如下图: 所以出现了分布式的数据库。如下图: Partitioning的方式有range partitioning, list partitioning, hash partitioning。其中hash partitioning使用最多。如下图,数据转载 2017-11-09 15:32:40 · 2478 阅读 · 0 评论 -
数据库 规范
一般原则建议使用使用一致的、叙述性的名称。灵活使用空格和缩进来增强可读性。存储符合ISO-8601标准的日期格式(YYYY-MM-DD HH:MM:SS.SSSSS)。最好使用标准SQL函数而不是特定供应商的函数以提高可移植性。保证代码简洁明了并消除多余的SQL——比如非必要的引号或括号,或者可以推导出的多余WHERE语句。必要时在SQL代码中加入注释。优先使用C语言式的以/开始以/结束原创 2017-11-08 13:46:22 · 288 阅读 · 0 评论 -
Cassandra
Cassandra利用点对点模型,其消除了单点故障可能性,从而帮助我们在机架故障甚至是网络整体下线的情况下得以幸存。我们能够在无需影响用户体验的情况下,顺利处理整体数据中心故障。只有能够应对故障的分布式系统才是一套拥有出色设计水平的分布式系统,而在Cassandra的帮助下,我们能够承受各类意外状况,并将应对机制纳入数据库架构及功能当中。Cassandra使用的数据模型对于关系数据库管理员来说并不陌原创 2017-11-07 14:11:32 · 562 阅读 · 0 评论 -
Ubuntu 14.04 install Mysql 5.6
remove all mysql$ sudo apt-get autoremove –purge mysql*$ sudo rm -rf /var/lib/mysql/$ sudo rm -rf /etc/mysql/install mysql$ sudo apt-get update$ sudo apt-get build-dep mysql-server-5.6$ sudo apt-g原创 2017-03-29 08:37:04 · 601 阅读 · 0 评论 -
11 视图
视图相对于普通表的优势:1.简单:使用视图的用户不必关心表的结构,关联条件或筛选条件,对用户来说已经是过滤好的复合条件结果。2.安全:使用视图的用户只能看到被写入视图的列,而不能看到表中所有的列。3.数据独立:一旦视图结构确定了,可以屏蔽表结构变化对用户的影响,如果源表修改列名,则可以通过修改视图来解决。 视图的操作:MySQL中创建视图可以通过create view原创 2013-03-28 21:53:18 · 630 阅读 · 0 评论 -
7 表类型(存储引擎)的选择
Mysql支持许多的存储引擎,但是只要Innode和BDB支持事务类型。 查看当前默认的存储引擎:show variables like 'table_type';可以通过show engines \G 或show variables like 'have%' 查看支持的引擎修改表的引擎:alter table tablename engine = type;原创 2013-03-28 21:53:14 · 616 阅读 · 0 评论 -
设置XAMPP的数据库密码
许多人通过他们自己的经验认识到安装 Apache 服务器是件不容易的事儿。如果您想添加 MySQL、PHP 和Perl,那就更难了。XAMPP 是一个易于安装且包含 MySQL、PHP 和 Perl 的 Apache 发行版。XAMPP的确非常容易安装和使用:只需下载,解压缩,启动即可。但是默认安装情况下,MySQL数据库的密码是空的,有些程序在安装时需要密码的,否则无法运行。在此,我提供两种方法原创 2013-03-28 21:53:53 · 5473 阅读 · 0 评论 -
Ubuntu下安装MongoDB
一、什么是MongoDB? NOSQL指的是非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的 SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可原创 2013-03-28 21:55:56 · 730 阅读 · 0 评论 -
10 MongoDB分片
进行分片,只要启动一下mongos进程即可。不分片的时候,是客户端直接连接mongod进行数据的查找。进行分别后,客户端会先连接到mongos,然后mongos会连接每个进行了分片的mongod进行数据查找。 考虑分片的情况1.机器的磁盘不够用了2.单个mongod已经不能满足写数据的性能需要了。3.想将大量的数据放在内存中提高性能。4.一般来说,先从不分片开始,然后在原创 2013-03-28 21:55:49 · 507 阅读 · 0 评论 -
28 Mysql权限与安全
权限管理当用户连接的时候,权限表的存取过程有以下两个阶段.1.先从user表的host,user,password这3个字段中判断连接的ip,用户名,密码是否存在于表中.2.如果通过身份验证,则按照以下权限表的顺序得到数据库权限:user->db->tables_priv->columns_priv.在这几个权限表中,优先级递减.即如果有user权限将不再检查后面的权限,如果没有u原创 2013-03-28 21:54:12 · 629 阅读 · 0 评论 -
26 Mysql日志
错误日志可以用--log-error[=file_name]选项来指定mysqld(mysql服务器)保存错误日志文件的位置.如果没有给定file_name,mysqld使用错误日志名host_name.err(host_name为主机名)并默认在参数datadir(数据目录)指定的目录中写入日志文件. 二进制日志二进制日志(binlog)记录了所有的DDL(数据定义语句)和DML原创 2013-03-28 21:54:06 · 457 阅读 · 0 评论 -
innodb_flush_log_at_trx_commit参数
innodb_flush_log_at_trx_commit = 0,Innodb 中的Log Thread 没隔1 秒钟会将logbuffer中的数据写入到文件,同时还会通知文件系统进行文件同步的flush操作,保证数据确实已经写入到磁盘上面的物理文件。但是,每次事务的结束(commit 或者是rollback)并不会触发LogThread 将log buffer 中的数据写入文件。所以,当设置原创 2013-03-28 21:54:04 · 1216 阅读 · 0 评论 -
mongodb 4 查询
show dbs 可以查看所有的数据库find简介find()里面如果不加键值对,默认就是{},即查询所有。如果加上了键值对,就相当于加上了查找条件。 指定返回的键值对如果用户只需要查询得到用户的email和username,则可以通过find或者findOne的第二个参数来指定想要的键。如:>db.user.find({},{"email":1,"username原创 2013-03-28 21:55:34 · 582 阅读 · 0 评论 -
mongodb 5 索引
索引简介现在要依据某个键进行查找:>db.coll.find({"username":"mark"}),现在我们可以对username创建索引,可以使用ensureIndex方法。>db.coll.ensureIndex({"username":1})例如下面的查询不会从先前建立的索引中获得任何的性能提升。>db.coll.find({"date":date1}).sort("da原创 2013-03-28 21:55:36 · 580 阅读 · 0 评论 -
3 创建,更新及删除文档
插入并保存文档db.coll.insert()插入的机制,是使用驱动程序将数据转为Bson的形式,然后将其送入数据库。数据库解析Bson,检验是否包含"_id"键并且文档不超过4MB。如果验证正确,则插入只是简单的将文档原样存入数据库中,这样有可能会插入无效的数据。如果需要检查,则可以在启动的时候执行 --objcheck 选项进行文档结构的检查。MongoDB在插原创 2013-03-28 21:55:30 · 568 阅读 · 0 评论 -
mongoDB基本使用手册
原文地址:mongoDB基本使用手册作者:cailylove1、基本操作db.AddUser(username,password)添加用户db.auth(usrename,password) 设置数据库连接验证db.cloneDataBase(fromhost) 从目标服务器克隆一个数据库db.commandHelp(name) returns the help for转载 2013-03-28 21:54:49 · 490 阅读 · 0 评论 -
6 聚合
count最简单的聚合工具,返回集合中的文档数量,速度非常快。>db.coll.count() 计算查询条件为name是xiaozhe的总数,有条件的查询速度会变慢。>db.coll.count({"name":"xiaozhe"}) distinct用来找出给定键的所有不同值,使用时必须指定集合和键。>db.runCommand({"distinct":"coll原创 2013-03-28 21:55:40 · 475 阅读 · 0 评论 -
7 MongoDB进阶指南
数据库命令命令的工作原理Drop命令可以在shell中删除一个集合。比如db.coll.drop()。同理也可以用runCommand来达到一样的效果。>db.runCommand({"drop":"coll"}) 命令参考MongoDB支持超过75个命令,我们可以在shell中运行:db.listCommands()或者从驱动程序中运行等价的命令list-commands原创 2013-03-28 21:55:42 · 657 阅读 · 0 评论 -
mongod 修复 Mon Mar 317:46:37
查看mongodb.log日志,发现日志里有以下语句:..............Mon Mar 317:46:37 [conn148] Assertion:10295:getFile(): bad file number value (corrupt db?): runrepair..............翻译 为: 声明: getFile():错误的文件数值(损坏的数据库?原创 2013-03-28 21:55:59 · 642 阅读 · 0 评论 -
29 Mysql复制(即主从服务器搭配)
Mysql复制含义是将主数据库的DDL和DML操作通过二进制日志传到复制服务器(也叫从服务器)上,然后在从服务器上对这些日志重新执行(也叫重做),从而使得从服务器和主服务器的数据保持同步.Mysql支持一台主服务器同时向多台从服务器进行复制,从服务器同时也可以作为其他服务器的主服务器,实现链状复制.优点:1.如果主服务器出现问题,可以快速切换到从服务器提供服务.2.可以原创 2013-03-28 21:54:14 · 707 阅读 · 0 评论 -
mysql innodb 外键关联约束讲解
可通过查表信息查看外键的创建信息:Showcreate table tablename \G;从mysql 3.23.44开始,innodb支持外键约束,跟Oracle基本相同,语法形式如下[CONSTRAINTsymbol] FOREIGN KEY [id] (index_col_name, ...)REFERENCEStbl_name (index_col_name原创 2013-03-28 21:52:57 · 938 阅读 · 0 评论 -
10 索引的设计和使用
创建索引的语法:Create [unique | fulltext | spatial] index index_name [using index_type] on table_name(index_col_name) 如给city表的city字段创建了10个字段的索引:Ex: create index index_cityname on city(city(10));删除索引的原创 2013-03-28 21:53:16 · 489 阅读 · 0 评论 -
Mysql:bit类型的查询与插入
Mysql关于bit类型的用法:位字段值使用b'value'符号写位字段值。value是一个用0和1写成的二进制值。位字段符号可以方便指定分配给BIT列的值:mysql> CREATE TABLE test(id BIT(8));mysql> INSERT INTO testVALUES(2)mysql> INSERT INTO testVALUES(5)mysql> SELE原创 2013-03-28 21:58:50 · 3845 阅读 · 0 评论 -
Sphinx 在 windows 下安装使用
前一阵子尝试使用了一下 Sphinx ,一个能够被各种语言 (PHP/Python/R y/etc)方便调用的全文检索系统。网上的资料大多是在 linux 环境下的安装使用,当然,作为生产环境很有必要部署在 *nix环境下,作为学习测试,还是 windows 环境比较方便些。本文旨在提供一种便捷的方式让 Sphinx 在 windows 下安装配置以支持中文全文检索,配置部分在 linux原创 2013-03-28 21:58:47 · 1397 阅读 · 0 评论