随笔分类 - 数据库
摘要:原文链接:http://www.javaarch.net/jiagoushi/751.htmMySQL Events详解 MySQL Events是能够在特定时间执行的query语句集合。 首先要开启mysql events SHOW VARIABLES LIKE "EVENT_SCHEDULER"; SET GLOBAL event_scheduler=ON; 通过执行SHOW VARIABLES LIKE 'EVENT_SCHEDULER'; 确定已经开启,正在执行的events可以通过 SHOW PROCESSLIST;查看。 创建一个event DE
        阅读全文
            
摘要:原文链接:http://www.javaarch.net/jiagoushi/706.htmOracle删除重复记录的几种方式 如果把一个文件多次导入数据库,可能会引入重复记录,那么有哪些方法可以删除重复记录呢? REATE TABLE tbl_test( SER_NO NUMBER, FST_NM VARCHAR2(30), DEPTID NUMBER, CMNT VARCHAR2(30)); INSERT INTO tbl_test VALUES(1, 'aaaaa', 2004, 'xxx'); INSERT INTO tbl_test VAL...
        阅读全文
            
摘要:原文链接:http://www.javaarch.net/jiagoushi/705.htmOracle 11G 虚拟列 Virtual Column Oracle 11G 在表中引入了虚拟列,虚拟列是一个表达式,在运行时计算,不存储在数据库中,不能更新虚拟列的值。 定义一个虚拟列的语法: column_name [datatype] [GENERATED ALWAYS] AS [expression] [VIRTUAL] 1.虚拟列可以用在select,update,delete语句的where条件中,但是不能用于DML语句
2.可以基于虚拟列来做分区
3. 可以在虚拟列上建索引,...
        阅读全文
            
摘要:原文链接:http://www.javaarch.net/jiagoushi/704.htmOracle Skip Locked Oracle 11g引入skip locked。
Skip Locked 是在query select语句中跳过已经被其他正在执行的query select语句锁住的行,只执行能够获得锁的行。 select for update如何查询大数量,那么其他session同时执行的select语句可能会等待锁超时而报下面这个错 ORA-30006: resource busy; acquire with WAIT timeout expired 如果是不超时的...
        阅读全文
            
摘要:原文链接:http://www.javaarch.net/jiagoushi/703.htm各个数据库获取随机列的语法 MySQL SELECT column FROM table ORDER BY RAND() LIMIT 10 Oracle SELECT column FROM( SELECT column FROM table ORDER BY dbms_random.value ) WHERE rownum <= 10 PostgreSQL SELECT column FROM table ORDER BY RANDOM() LIMIT 10 SQL Serve...
        阅读全文
            
摘要:原文地址:http://www.javaarch.net/jiagoushi/701.htm使用Mysqldump 备份数据库 1.备份一个数据库 mysqldump --user [user name] --password=[password] [database name] > [dump file] or mysqldump -u[user name] -p[password] [database name] > [dump file] 示例: mysqldump --user root --password=myrootpassword db_test >...
        阅读全文
            
摘要:原文地址:http://www.javaarch.net/jiagoushi/700.htmMySQL 全文搜索支持 从MySQL 4.0以上 myisam引擎就支持了full text search 全文搜索,在一般的小网站或者blog上可以使用这个特性支持搜索。
那么怎么使用了,简单看看: 1.创建一个表,指定支持fulltext的列 CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT ...
        阅读全文
            
摘要:原文链接:http://www.javaarch.net/jiagoushi/702.htm如何重置mysql的密码 如果知道密码,则通过以下方式修改; gaurav@gaurav:~$ mysql --user=root --pass mysql Enter password: mysql> update user set Password=PASSWORD('new-password-here') WHERE User='root'; Query OK, 2 rows affected (0.04 sec) Rows matched: 2 Change
        阅读全文
            
摘要:原文链接:http://www.javaarch.net/jiagoushi/699.htm怎么重置mysql的自增列1. 支持设置自增列的值ALTER TABLE table_name AUTO_INCREMENT = 1;不过这种方式自能设置大于当前使用的值,不能设置小于等于当前已经使用的自增列的值。myisam如果设置小于等于,则自增列的值会自动设置为当前最大值加1。innodb则不会改变。2.通过TRUNCATE把自增列设置为0,从MySQL 5.0.13开始TRUNCATE就能重置自增列为0.myisam和innode都是如此。TRUNCATE TABLE table_name;3.
        阅读全文
            
摘要:使用ssd硬盘加速 mysql index查询更多文章请参考:http://www.javaarch.net/jiagoushi/index.htm如果数据量比较大,而ssd容量又不是很大,那么可以考虑把index索引数据存到ssd上,把表数据还是存在旧的硬盘上。那么怎么让mysql把index索引建在ssd上并使用ssd上的index数据呢?1.在ssd上建几个目录mkdir /ssd/mysql_indexesmkdir /ssd/mysql_indexes/my_big_db_namechmod 700 /ssd/mysql_indexeschown –R mysql:mysql /ss
        阅读全文
            
摘要:原文链接:http://www.javaarch.net/jiagoushi/552.htmMysql 5.5分区特性增强深度解析 1.最直观的部分,用非整数列分区 partition by non-integer columns,mysql5.1只支持基于整数列的分区,如果你要用日期 date或者字符串 string,那么你自己需要写一个函数做转换。 比如我们看下面一个table: CREATE TABLE expenses ( expense_date DATE NOT NULL, category VARCHAR(30), amount DECIMAL (10,...
        阅读全文
            
摘要:我们项目在公司的大战略下需要从oracle迁移到mysql,我们的项目使用的是ibatis,在ibatis层上需要的一些修改点如下:单元测试框架我们用的是jtester。1.	插入主键生成
Oracle insert时主键id是使用sequence方式:
<insert id="MS-BRANDMEMBER-INSERT" parameterClass="TA-brandMember">
<selectKey resultClass="long" keyProperty="id"> SELE
        阅读全文
            
摘要:#/bin/sh#检测mysql server是否正常提供服务mysqladmin -u sky -ppwd -h localhost ping#获取mysql当前的几个状态值mysqladmin -u sky -ppwd -h localhost status#获取数据库当前的连接信息mysqladmin -u sky -ppwd -h localhost processlist#获取当前数据库的连接数mysql -u root -p123456 -BNe "select host,count(host) from processlist group by host;" 
        阅读全文
            
摘要:在session的public Result executeCompiledStatement(Statement cs, Object[] pvals)方法执行中会处理事务 boolean isTX = cs.isTransactionStatement(); if (!isTX) { if (database.logger.getSqlEventLogLevel() >= SimpleLog.LOG_NORMAL) { sessionContext.setDyn...
        阅读全文
            
摘要:执行过程先分析select语句的解析过程: select语句的解析集中在ParserDQL类的XreadQueryExpression方法中,其中XreadQueryExpressionBody select除了limit,offset,fetch关键字外的其他条件解析,XreadOrderByExpression是limit,offset,fetch,ordre by的解析,我们分析简单的select * from user where * order by * limit 2 offset 5 这种语句,对于嵌套子查询和联合查询待会简单过下。 QueryExpression que...
        阅读全文
            
摘要:查询过程前面解析类似insert,最终调用是在下面这个QuerySpecification类的getSingleResult方法,RangeVariable是查询条件相关 private Result getSingleResult(Session session, int maxRows) { int[] limits = sortAndSlice.getLimits(session, this, maxRows); Result r = buildResult(session, limits); ...
        阅读全文
            
摘要:我们看看insert语句的执行过程, 如果cs.isTransactionStatement()是true,则表示启动事务执行, public Result executeCompiledStatement(Statement cs, Object[] pvals) { Result r; if (abortTransaction) { rollback(false); return Result.newErrorResult(Error.error(ErrorCode.X_40001)); ...
        阅读全文
            
摘要:hsqldb是java版的简化数据库,代码量比较少,对于学习数据库的设计是一个比较好的选择,对于derby代码量比较大,mysql c++更复杂,所以就通过学习hsqldb来学习数据库的设计。在这里可以下载到源码http://hsqldb.org/,源码包下org.hsqldb.test有很多的测试类,大家可以从这里开始调试学习hsqldb。HyperSQL数据库叫catalog,根据数据库存储方式不同分为几种:• mem: stored entirely in RAM - without any persistence beyond the JVM process's life• f
        阅读全文
            
摘要:在server类的handleConnection方法中处理客户端的输入, 首先调用allowConnection方法检测下客户端ip是否合法,ServerAcl类中可以查看,在server启动输入参数中可以指定acl 黑白名单ip文件,检测代码很简单,这里就不说明了,有兴趣的看下ServerAcl类。 protected boolean allowConnection(Socket socket) { if (isShuttingDown) { return false; } return (acl == n...
        阅读全文
            
摘要:1.到mysql网站下载mysql cluster版本http://www.mysql.com/downloads/cluster/ 下载到/home/weijianzhongwj/software下2.安装mysql clustercd /home/weijianzhongwj/software tar xvfmysql-cluster-gpl-7.2.8-linux2.6-i686.tar.gz ln -smysql-cluster-gpl-7.2.8-linux2.6-i686 mysqlc在$HOME/.bashrc增加 export PATH=$PATH:/home/weijianz
        阅读全文
            
                    
                
浙公网安备 33010602011771号