
数据库
爱上香锅的麻辣
高级Java开发工程师,熟悉电商系统整体架构(尤其是订单和商品系统)和服务治理体系
展开
-
使用占位符进行模糊查询
使用占位符进行模糊查询时,一定要将“%”放在参数值里面,不能放在sql里面。例如:1.SELECT * FROM User WHERE Name like '%?%'"ps.setString(1,"刘")错误2.SELECT * FROM User WHERE Name like ?ps.setString(1,"%刘%")正确原创 2015-10-02 11:01:55 · 12320 阅读 · 2 评论 -
MySQL、SQLServer、Oracle添加、修改、删除字段总结
MySQL、SQLServer、Oracle添加、修改、删除字段总结:alter table……原创 2017-05-06 10:47:02 · 673 阅读 · 0 评论 -
MySQL中CURRENT_TIMESTAMP的使用
众所周知,MySQL的日期类型可以使用CURRENT_TIMESTAMP来指定默认值,但是这个跟MySQL的版本有关系,只有5.6之后的版本才能使用CURRENT_TIMESTAMP作为日期类型的默认值。 例如:ALTER TABLE t_user ADD update_time DATETIME DEFAULT CURRENT_TIMESTAMP在5.6之前的版本,使用CURRENT_TIMES原创 2017-05-06 22:15:43 · 65696 阅读 · 8 评论 -
1.Mycat原理解析-Mycat架构分析
MyCat是社区爱好者在阿里Cobar基础上进行二次开发,解决了cobar当时存 在的一些问题,并且加入了许多新的功能在其中,目前MyCAT社区活跃度很高。原创 2018-01-02 08:52:34 · 10791 阅读 · 1 评论 -
2.Mycat原理解析-网络通信框架
一、3种 IO 类型根据消息通信机制来分,IO分为同步与异步 同步:调用者主动等待调用的结果,发出调用后,在没有得到结果之前该调用就不返回; 异步:发出调用后就直接返回了,但是没有结果。被调用者会在调用真正执行完后,通过状态或者回调函数将结果通知调用者。根据程序在等待调用结果时的状态来分,IO分为阻塞于非阻塞。 阻塞:调用结果返回之前,当前线程会被挂起,调用线程只有在得到结果之后才会返回。原创 2018-01-02 11:45:46 · 1889 阅读 · 0 评论 -
4.Mycat原理解析-线程模型
Mycat的线程主要包括下面几个部分:主线程,IO线程(包括NIOAcceptor、NIOConnector、NIOReactor)、调度线程(包括scheduler、heartbeatScheduler)、业务线程池(包括timerExecutor、businessExecutor)原创 2018-01-03 18:51:10 · 773 阅读 · 0 评论 -
3.Mycat原理解析-后端连接管理
一、数据源与连接池 前面我们说过,Mycat除了作为服务端外,还作为客户端来连接数据库,所以需要管理与数据库的连接。在管理后端连接中,主要涉及到下面两个类。PhysicalDatasourceBackendConnection 从下面的类图可以看出,同普通的数据源一样,PhysicalDatasource负责建立连接,并且内部维护了一个连接池——conMap。 Mycat原创 2018-01-03 11:45:39 · 2586 阅读 · 0 评论 -
MySQL执行计划与索引规范
一、MySQL explain执行计划详解使用explain查看MySQL的执行计划时,会看到下面的输出结果。 首先,解释一下每一列的意思及常见的值。 1、id 在包含连接查询、子查询的语句中,使用explain查看执行计划时,会有多条结果。id越大的越先执行,id相等时,从上往下依次执行,id为NULL表示这是一个结果集,不需要使用它来查询。2、select_typesel原创 2016-03-07 11:52:56 · 820 阅读 · 0 评论 -
MySQL生成分布式id
一、分布式id算法首先需要在id_sequence表中配置一个唯一的key_name,分布式id的起始值和步长。 当服务需要分布式id时,会首先从数据库中获取一个start_id,然后将start_id更新成start_id+step。那么从start_id~start_id+step段内对的所有id,都属于当前这个服务了。如果start_id用完了,就会按照相同的流程重新申请一个start原创 2016-09-08 09:16:32 · 2314 阅读 · 0 评论 -
5 Mycat原理解析-SQL语句的处理
Mycat接收到客户端的sql语句时,会统一使用ServerQueryHandler.query(String sql)方法来处理,ServerQueryHandler主要做了两件事情。确定sql的类型。比如:SELECT、UPDATE、INSERT、SHOW等将不同类型的sql交给不同的处理器进行处理@Overridepublic void query(String sql) {原创 2018-01-25 13:50:59 · 1370 阅读 · 0 评论 -
6 Mycat原理解析-EXPLAIN语句处理
前面,我们已经讲过了Mycat如何判断sql类型,然后针对不同类型的sql就行不同的处理【Mycat原理解析-SQL语句的处理】,下面,我们来看看其中的explain语句,Mycat是怎么处理的。 Mycat提供的EXPLAIN语句并不是用来查看执行计划的,而是用来查看路由结果的,如果要查询真正的执行计划,拿到路由结果里面的sql语句,到具体的实例上面查看就行了。例如,下面的sql语句,就被原创 2018-01-26 14:42:21 · 3703 阅读 · 0 评论 -
MySQL、SQLServer多表关联更新
MySQL、SQLServer多表关联更新原创 2017-05-10 22:50:07 · 1387 阅读 · 0 评论 -
Mysql索引类型
一、Mysql索引的概念及类别索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。1、普通索引这是最基本的索引,它没有任何限制,MyIASM中默认的BTREE类型的索引,也是我们大多数情况下用到的索引。–直接创建索引CREATE INDEX index_name ON table (colum...原创 2015-10-22 23:52:46 · 579 阅读 · 0 评论 -
Oracle数据类型
ORACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONGRAW&RAW类型、ROWID&UROWID类型。一.字符串类型字符串数据类型还可以依据存储空间分为固定长度类型(CHAR/NCHAR) 和可变长度类型(VARCHAR2/NVARCHAR2)两种.固定长度:指的是当输入的字段值小转载 2015-10-19 23:28:18 · 500 阅读 · 0 评论 -
PL/SQL Developer设置要显示的面板布局
1.在Tools下面选择要显示的面板,如下图所示:2.选择Windows->Save Layout,下次打开后就是你当前的面板布局原创 2015-10-03 17:34:04 · 5048 阅读 · 0 评论 -
Sql中日期类型的比较
一.存储日期的字段为日期类型MySql(Date、DateTime、TimeStamp等): 方法一:直接比较 select * from test where create_time between ‘2015-03-03 17:39:05’ and ‘2016-03-03 17:39:52’;方法二:用unix_timestamp函数,将字符型的时间,转成unix时间戳 select *原创 2015-10-20 00:07:26 · 52172 阅读 · 1 评论 -
MySQL的用户变量和系统变量
MySQL中的变量分为用户变量与系统变量。一、用户变量用户变量与数据库的连接相关,在一次连接中声明的变量,在连接断开后就会消失。 查看变量的时候,可以使用show avariables like '...'语句,设置变量时,可以使用set varname=value语句原创 2016-09-18 09:10:13 · 4021 阅读 · 0 评论 -
MySQL、SQL Server中字符串拼接
MySQL中,可以使用CONCAT函数进行字符串匹配,SQL Server中,可以直接使用加号"+"进行字符串拼接。另外,MySQL还提供了CONCAT_WS、GROUP_CONCAT函数,分别可以进行分隔符连接字符串及分组连接字符串。原创 2017-02-17 17:34:18 · 26328 阅读 · 0 评论 -
数据库驱动程序
一、什么是数据库驱动程序?JDK提供jdbc接口,就是java怎样去调用数据库,但是注意提供的只是接口,数据库提供商实现这些接口,就是所谓数据库驱动。java调用数据库驱动,驱动真正执行数据库操作。二、常用数据库的驱动程序Oracle数据库: 驱动程序包名:ojdbc14.jar 驱动类的名字:oracle.jdbc.driver.OracleDriver JDBC URL:jdbc:orac原创 2017-02-24 23:44:57 · 9043 阅读 · 1 评论 -
JDBC的4种驱动类型
Java中的JDBC驱动可以分为四种类型,包括JDBC-ODBC桥、本地API驱动、网络协议驱动和本地协议驱动。原创 2016-03-03 11:34:01 · 5775 阅读 · 4 评论 -
数据库常用查询
1、查询表结构SQLServer sp_help [table_name]; sp_columns [table_name];MySQL desc [table_name]; SHOW COLUMNS FROM [table_name]; SHOW FIELDS FROM [table_name];2、查看数据库版本号SQLServer SELECT @@version;MyS原创 2017-03-25 00:12:48 · 741 阅读 · 0 评论 -
MySQL批量插入测试数据
CREATE PROCEDURE proc_batch_insert()BEGINDECLARE pre_name BIGINT;DECLARE ageVal INT;DECLARE i INT;SET pre_name=187635267;SET ageVal=100;SET i=1;WHILE i < 1000000 DO INSERT INTO t_user(`name`,age,phone原创 2017-03-28 17:43:44 · 6365 阅读 · 10 评论 -
MySQL使用索引与不使用索引比较
首先,我们通过下面的方式生成1百万条数据。 http://blog.csdn.net/u011983531/article/details/67639678一、普通索引在不建立索引情况下,通过下面的语句查询age=20的人数SELECT count(1) FROM `t_user` WHERE age=20;耗时:1.2s通过下面的语句查看执行计划EXPLAIN SELECT count(1) F原创 2017-03-28 18:28:31 · 5904 阅读 · 0 评论 -
7 Mycat原理解析-DDL语句处理
前面,我们已经讲过了Mycat如何判断sql类型,然后针对不同类型的sql就行不同的处理【Mycat原理解析-SQL语句的处理】,下面,我们来看看其中的DDL语句,Mycat是怎么处理的。结合ServerParse.java中的代码,我们来看看Mycat支持的常见的DDL语句的。CREATE:create indexDROP:drop indexTRUNCATE:truncate t原创 2018-01-29 09:23:43 · 1895 阅读 · 0 评论