
数据库
文章平均质量分 66
爱代码也爱生活
吸收别人的精华,记录自己走过的坑,爱好php、java、运维、web前端
展开
-
sql server触发器操作实例
DML触发器分为:1、 after触发器(之后触发)a、 insert触发器b、 update触发器c、 delete触发器2、 instead of 触发器 (之前触发)其中after触发器要求只有执行某一操作insert、update、delete之后触发器才被触发,且只能定义在表上。而instead of触发器表示并不执行其定义的操作(insert、updat原创 2016-07-06 16:44:05 · 9080 阅读 · 0 评论 -
sql server和mysql常用字段类型对比
都有的数据类型BIGINTCHARDATETIMEDECIMALFLOATINT,INTEGERSMALLINTTEXTTIMESTAMPTINYINTVARCHAR需要做修改的数据类型关键代码修改:原创 2016-07-05 13:49:40 · 2399 阅读 · 0 评论 -
sql server高效分页
SELECT TOP 每页记录数*页码FROM ( SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM TABLE ) as A WHERE RowNumber > 每页记录数*(页码-1)原创 2016-07-09 16:29:22 · 804 阅读 · 0 评论 -
常用的pdo操作类,支持mysql、sqlserver、oracle,有实例
工作中需要操作sqlserver、oracle都是使用的这个类,当时是在别人的基础上改进了,现在分享下<?phpclass Pdodb{ protected $pdo; protected $res; protected $config; /*构造函数*/ function __construct($config){ $this->Config = $confi原创 2016-07-08 21:06:12 · 6406 阅读 · 0 评论 -
mysql主从不同步、数据不一致解决办法
第一种:通过sql_slave_skip_counter跳过同步错误,适用于一般异常如插入时主键冲突(这种情况一般是在从库进行了写操作,错误提示Last_SQL_Errno: 1062Last_SQL_Error: Error 'Duplicate entry '14' for key 'PRIMARY'' on query. Default database: 'hadoop'. Q原创 2016-08-04 16:41:26 · 11360 阅读 · 0 评论 -
mysql查看binlog日志内容
mysql的binlog日志位置可通过show variables like '%datadir%';查看,直接打开是乱码,要看其内容2个办法:1、登录到mysql查看binlog只查看第一个binlog文件的内容mysql> show binlog events;查看指定binlog文件的内容mysql> show binlog events in 'mysq原创 2016-08-03 20:00:29 · 40033 阅读 · 2 评论 -
mysqldump导出所有数据库
做主从时,需要导出所有数据库,使用mysqldump –all-databases会导出所有库,但是包含information_schema、mysql、test,这时需要排除这些库方法:[root@hd3 ~]# mysql -e "show databases;" -uroot -p| grep -Ev "Database|information_schema|mysql|test原创 2016-08-04 16:33:08 · 2819 阅读 · 0 评论 -
mysql binlog恢复数据
常用binlog操作命令:1、查看所有binlog日志列表mysql> show master logs;2、查看master状态,即最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值mysql> show master status;3、刷新log日志,自此刻开始产生一个新编号的binlog日志文件mysql> flush原创 2016-08-04 13:41:28 · 866 阅读 · 0 评论 -
mysql终端插入中文乱码解决办法
虚拟机新装的mysql启动后,命令行插入中文乱码首先查看下编码mysql> show variables like 'character%';+--------------------------+----------------------------+| Variable_name | Value |+-------原创 2016-08-04 12:06:20 · 2250 阅读 · 0 评论 -
mysql binlog日志及mysqlbinlog操作详解
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。 一般来说开启二进制日志大概会有1%的性能损耗(参见MySQL官方中文手册 5.1.24版)。二进制有两个最重要的使用场景: 其一:MySQL Repli转载 2016-08-04 11:27:02 · 20797 阅读 · 2 评论 -
sql server创建视图操作
1、 什么是视图视图就是一个虚拟的数据表,该数据表中的数据记录是有一条查询语句的查询结果得到的。2、 创建视图准则创建视图需要考虑一下准则: # 视图名称必须遵循标识符的规则,该名称不得与该架构的如何表的名称相同 # 你可以对其他视图创建视图。允许嵌套视图,但嵌套不得超过32层。视图最多可以有1024个字段 # 不能将规则和default定义于视图原创 2016-07-05 13:55:32 · 4578 阅读 · 1 评论 -
thinkphp框架实现mysql读写分离
基于thinkphp3.2.3,官方手册:http://www.kancloud.cn/manual/thinkphp/1733注意事项:1、首先得配置好mysql主从,可以多主多从2、在读写分离的情况下,默认第一个数据库配置是主服务器的配置信息,负责写入数据,如果设置了DB_MASTER_NUM参数,则可以支持多个主服务器写入。其它的都是从数据库的配置信息,负责读取数据,数量不限制。原创 2016-08-03 20:33:03 · 8218 阅读 · 0 评论 -
mysql分库分表实战及php代码操作完整实例
当单表达到几千万时,查询一次要很久,如果有联合查询,有可能会死在那分库分表主要就是解决这个问题,减小数据库的负担,缩短查询时间分库:1)按功能分用户类库、商品类库、订单类库、日志类、统计类库...1)按地区分每个城市或省市一个同样的库,加上后缀或前缀如:db_click_bj、db_click_sh...分表:1、横向分表 解决表记录太大问题1)按某个字原创 2016-08-07 16:25:16 · 19903 阅读 · 2 评论 -
mysql使用explain优化sql语句
mysql 查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行。最终目标是提交 select语句查找数据行,而不是排除数据行。优化器试图排除数据行的原因在于它排除数据行的速度越快,那么找到与条件匹配的数据行也就越快。如果能够首先进行最严格的测试,查询就可以执行地更快。explain的每个输出行提供一个表的相关信息,并且每个行包括下面原创 2016-09-04 23:28:27 · 1957 阅读 · 0 评论 -
mysql千万级数据表结构修改
当需要对表进行ddl操作如加索引、增删列时,数据量小时直接在线修改表结构影响不大当表达到百万、千万数据就不能直接在线修改表结构下面是具体的过程:1、备份数据select * from ih_order into outfile '/bak/order.txt';mysql> select * from ih_order into outfile 'D:/bak/order.原创 2016-09-05 20:09:19 · 15570 阅读 · 0 评论 -
myisam和innodb 索引实现原理
b-tree,b是balance,一般用于数据库的索引。使用b-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度myisam引擎使用b+tree作为索引结构,叶节点的data域存放的是数据记录的地址myisam索引的原理图:innodb索引实现虽然innodb也使用b+tree作为索引结构,但具体实原创 2016-09-05 19:47:22 · 5128 阅读 · 0 评论 -
php mongodb操作类,适合mongodb2.x和mongodb3.x
在别人基础上修改的mongodb操作类,适合mongodb2.x和mongodb3.x<?php/*** Mongodb类** examples: * $mongo = new HMongodb("127.0.0.1:11223"); * $mongo->selectDb("test_db"); * 创建索引 * $mongo->ensureIndex("tes原创 2016-07-06 13:57:41 · 9292 阅读 · 0 评论 -
centos6.5安装MongoDB2.4.9
注意事项:1 mongodb-linux-x86_64-2.4.9.tar.gz使用的是lamp一键安装包的mongodb,不需安装解压即可用2 mongodb.conf是在mongodb/bin下Mongo DB是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式,备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想,在Mongo原创 2016-07-06 15:23:29 · 5690 阅读 · 0 评论 -
mysql调整max_connections和max_user_connections及php模拟并发测试
php模拟创建大量mysql连接max_mysql.php<?phpfor($i=1;$i<=500;$i++){ exec("nohup php /var/www/html/big/link_mysql.php > /dev/null &");}?>link_mysql.php<?php$conn=mysql_pconnect("192.168.1.199","big"原创 2016-09-05 17:23:25 · 4614 阅读 · 0 评论 -
mysql服务器cpu爆满解决办法
碰到一个mysql cpu爆满的问题,简单记录下步骤:1、通过show processlist找到耗时最长的mysql> show processlist;+----+------+-----------------+------+---------+------+--------------+------------------------------------原创 2016-09-04 23:19:46 · 14195 阅读 · 2 评论 -
mysql事务隔离级别、乐观锁、悲观锁
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。 为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步 1、同步和异步的区别和联系 所谓同步,可以理解为在原创 2016-08-02 11:02:28 · 1190 阅读 · 4 评论 -
mysql binlog的三种模式
mysql的binlog有3种记录模式STATEMENT,ROW,MIXEDStatement:基于sql语句的复制优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能缺点:ROW:基于行的复制优点:所有的语句都可以复制,不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了缺点:binlog 大了很多,复杂的回原创 2016-08-04 09:42:16 · 2733 阅读 · 0 评论 -
centos lvs+keepalived+mysql实现mysql数据库热备主主复制
实验环境:linux:centos6.6虚拟ip(vip):192.168.135.199mysql master:192.168.20.193mysql slave:192.168.20.195(这里只是为了后文方便区分,一个叫master,一个叫slave,其实在主主复制中,都是master也都是slave,没有主从之分)mysql的版本:[root@localho原创 2016-07-15 15:58:38 · 5426 阅读 · 1 评论 -
mysql查看表使用的数据库引擎
看某个使用的引擎,在显示结果里参数engine后面的就表示该表当前用的存储引擎:mysql> show create table 表名;看mysql支持哪些存储引擎:mysql> show engines;看mysql当前默认的存储引擎:mysql> show variables like '%storage_engine%';原创 2016-07-16 14:10:47 · 6186 阅读 · 0 评论 -
replicate_do_db和repalicate_wild_do_table跨库同步问题
测试一:从:vi /etc/my.cnfreplicate_do_db=hadoop测试步骤:主:mysql> use hadoop;mysql> select * from test;+------+| id |+------+| 1 || 3 || 2 |+------+3 rows in set (0.00 s原创 2016-07-16 13:56:01 · 3770 阅读 · 0 评论 -
mysql配置文件my.cnf详解
以下是my.cnf配置文件参数解释:[client] port = 3309 socket = /home/mysql/mysql/tmp/mysql.sock [mysqld] !include /home/mysql/mysql/etc/mysqld.cnf #包含的配置文件 ,把用户名,密码文件单独存放 port = 3309 socket =转载 2016-07-16 13:11:51 · 849 阅读 · 0 评论 -
mysql查看当前、最大连接数、数据存放路径
1、查看数据库的最大连接数mysql> show variables like '%max_connections%';+-----------------+-------+| Variable_name | Value |+-----------------+-------+| max_connections | 151 |+-----------------+-原创 2016-07-16 11:59:37 · 710 阅读 · 0 评论 -
数据库备份类型
1、根据是否需要数据库离线冷备(cold backup):需要关mysql服务,读写请求均不允许状态下进行温备(warm backup): 服务在线,但仅支持读请求,不允许写请求热备(hot backup):备份的同时,业务不受影响注:这种类型的备份,取决于业务的需求,而不是备份工具MyISAM不支持热备,InnoDB支持热备,但是需要专门的工具如xtrabackup原创 2016-07-16 10:36:06 · 1432 阅读 · 0 评论 -
mysql数据库千万级别数据的查询优化和分页测试
我原来的公司是一家网络游戏公司,其中网站交易与游戏数据库结合通过ws实现的,但是交易记录存放在网站上,级别是千万级别的数据库是mysql数据库. 可能有人会问mysql是否支持千万级数据库,还有既然已经到了这个数据量公司肯定不差,为什么要用mysql而不用oracle这里我做一下解答 1. mysql绝对支持千万级数据库是可以肯定的, 2. 为什么选择择mysql呢?转载 2016-07-05 13:52:28 · 999 阅读 · 0 评论 -
MySQL大数据量分页SQL语句优化
分页程序原理很简单,这里就不多说了,本篇文章主要说的是在数据表记录量比较大的情况下,如何将分页SQL做到更优化,让MySQL执行的更快的方法。一般的情况下,我们的分页SQL语句是这样的:查看代码 打印1SELECT * FROM table ORDER BY id LIMIT 1000,10;以转载 2016-07-05 13:47:04 · 737 阅读 · 0 评论 -
centos定时备份mysql数据库 用shell脚本实现
数据很重要,上线的项目必须数据库做到定时备份数据量小的可用如下方法,下面的是全量备份,数据量大的肯定行不通的,这时可用mysql主从复制了注意事项:1、shell脚本的mysqldump命令必须使用绝对路径,首先用find / -name 'mysqldump' 找到真实绝对路径,否则备份出来文件0kb 2、在终端用不需加目录,说明安装的时候已经放入系统bin全局变原创 2016-07-07 15:53:19 · 8210 阅读 · 0 评论 -
centos安装freetds使php支持sqlserver操作
因为项目需要,需要在linux上面操作sqlserver数据库,但是php默认安装是不支持的,所以需要手动配置下,这里使用的shell脚本自动安装配置 freetds是一个程序库,可以实现在linux系统下访问微软的sql数据库注意事项:1、当时因为乱码问题调试了挺久,解决办法:freetds.conf 数据源一定要指定编码client charset = UTF-82、本质是原创 2016-07-08 10:14:55 · 3165 阅读 · 0 评论 -
php实现mysql读写分离
首先mysql主从需配置好,基本原理就是判断sql语句是否是select,是的话走master库,否则从slave查<?php/** * mysql读写分离 */ class db{ public function __construct($sql){ $chestr = strtolower(trim($sql)); //判断原创 2016-08-03 20:11:21 · 1358 阅读 · 0 评论 -
centos搭建mysql主从复制,读写分离
mysql 主从复制的优点:1、 如果主服务器出现问题, 可以快速切换到从服务器提供的服务,保证高可用性2、 可以在从服务器上执行查询操作, 降低主服务器的访问压力3、 可以在从服务器上执行备份, 以避免备份期间影响主服务器的服务注意事项:1、server-id必须唯一,一般使用ip的后三位2、从库Slave_IO_Running:NO 可能原因:帐号无权限操作3、原创 2016-07-09 13:41:31 · 9202 阅读 · 5 评论 -
mysql主主复制+Keepalived 打造高可用mysql集群
为了响应公司需求,打造出更安全的mysql集群,能够实现mysql故障后切换,研究了几天终于有了成果,一起分享一下。首先介绍一下这套集群方案实现的功能1、mysql服务器故障后自动转移,修好后自动切回2、mysql服务故障自动转移,修好后自动切回3、可以实现在几秒钟内转移以下内容均是实验环境,请根据实际情况修改响应参数生产环境MySQL主主同步主键冲转载 2016-07-09 15:28:40 · 2767 阅读 · 0 评论 -
mysql主从复制原理详解
master将改变记录到二进制日志中binlog,slave将master的binlog拷贝到自己的中继日志中,然后执行一遍sql语句就达到同步了一个服务器当主库,另一个或多个服务器当从库,主库会把对数据库的修改操作(新增 删除 修改)记录在binlog日志中,从库连接主库获取主库的binlog,并记录在中继日志relay-log中,然后从上次记住的位置起执行SQL语句,一旦遇到错误则原创 2016-07-08 23:40:30 · 9029 阅读 · 0 评论 -
mysql的存储引擎类型和索引类型
mysql的存储引擎,常用的有innodb和myisaminnodb支持外键,事务,行锁,安全性更高,写入快查询慢,适合大数据量myisam查询快写入慢,支持全文索引,表锁(MyISAM同一个表上的读锁和写锁是互斥的,容易阻塞),(myisam一个table实际保存为三个文件,.frm存储表定义,.MYD存储数据,.MYI存储索引)(表锁是把整个表锁住,不能写,行锁原创 2016-07-08 23:29:38 · 8553 阅读 · 0 评论 -
centos实现mysql主主复制
实验环境:linux:centos6.6mysql master:192.168.20.193mysql slave:192.168.20.195(这里只是为了后文方便区分,一个叫master,一个叫slave,其实在主主复制中,都是master也都是slave,没有主从之分)mysql的版本:[root@localhost ~]# mysql -Vmysql Ver原创 2016-07-16 09:32:09 · 1194 阅读 · 0 评论 -
mysql char和varchar区别
char定长,不足会补充varchar不定长char(2)和varchar(2) 这里的2都是字符数,不管是英文中文,也不管是gbk还是utf8都最多只能存2个字符,超出会被截取,如最多只能存 中a名,最后的名会被丢弃,gbk编码 一个英文字符存储占用1个字节,1个中文字符存储占用2字节utf8编码 一个英文字符存储占用1个字节,1个中文字符存储占用3字节原创 2016-07-08 12:24:45 · 5994 阅读 · 0 评论 -
mysql开启远程连接及修改root密码
开启远程连接mysql> grant all privileges on *.* to 'open'@'%' identified by '123456'; mysql> flush privileges;修改root密码mysql> use mysql; mysql> desc user;mysql> update user set Password = pas原创 2016-07-15 14:32:38 · 445 阅读 · 0 评论