mysql
文章平均质量分 63
USTCZYY
这个作者很懒,什么都没留下…
展开
-
一个需要避免的InnoDB间隙锁
在为一个客户排除死锁问题时我遇到了一个有趣的包括InnoDB间隙锁的情形。对于一个WHERE子句不匹配任何行的非插入的写操作中,我预期事务应该不会有锁,但我错了。让我们看一下这张表及示例UPDATE。mysql> SHOW CREATE TABLE preferences \G *************************** 1. row ***********************转载 2013-12-24 11:28:32 · 886 阅读 · 0 评论 -
mysql常用的字符串函数
MySQL 中的常用字符串函数 函数 功能CANCAT(S1,S2,…Sn) 连接S1,S2,…Sn 为一个字符串INSERT(str,x,y,instr) 将字符串str 从第x 位置开始,y 个字符长的子串替换为字符串instrLOWER(str)原创 2014-03-04 11:18:48 · 877 阅读 · 0 评论 -
MySQL 中MyISAM 表级锁和InnoDB 行级锁的实现特点
重点介绍了MySQL 中MyISAM 表级锁和InnoDB 行级锁的实现特点,并讨论了两种存储引擎经常遇到的锁问题和解决办法。对于MyISAM 的表,主要讨论了以下几点: 共享读锁(S)之间是兼容的,但共享读锁(S)与排他写锁(X)之间,以及排他写锁(X)之间是互斥的,也就是说读和写是串行的。 在一定条件下,MyISAM 允许查询和插原创 2014-03-05 22:06:55 · 2884 阅读 · 0 评论 -
mysql显示SQL语句执行时间
查看 MySQL 語法 詳細執行時間 與 CPU/記憶體使用量: MySQL Query ProfilerMySQL 的 SQL 語法調整主要都是使用 EXPLAIN , 但是這個並沒辦法知道詳細的 Ram(Memory)/CPU 等使用量.於 MySQL 5.0.37 以上開始支援 MySQL Query Profiler, 可以查詢到此 SQL 會執行多少時間, 並看出 CPU/Mem转载 2013-10-24 16:57:28 · 5136 阅读 · 1 评论 -
Mysql中使用的查询缓存
MySQL 的查询缓存(MySQL Query Cache)是在4.1 版本以后新增的功能,它的作用是存储SELECT 查询的文本以及相应结果。如果随后收到一个相同的查询,服务器会从查询缓存中重新得到查询结果,而不再需要解析和执行查询。查询缓存的适用对象是更新不频繁的表,当表更改(包括表结构和表数据)后,查询缓存值的相关条目被清空。查询缓存相关的参数主要有以下几个:my原创 2014-03-06 09:57:18 · 796 阅读 · 0 评论 -
Mysql中使用中间表提高统计查询速度
对于数据量较大的表,在其上进行统计查询通常会效率很低,并且还要考虑统计查询是否会对在线的应用产生负面影响。通常在这种情况下,使用中间表可以提高统计查询的效率,下面通过对session 表的统计来介绍中间表的使用:(1)session 表记录了客户每天的消费记录,表结构如下:CREATE TABLE session (cust_id varchar(10) , --客户编号c原创 2014-03-05 20:44:00 · 12684 阅读 · 1 评论 -
101个MySQL的调优技巧
MySQL是一个功能强大的开源数据库. 随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限. 这里是101条调节和优化MySQL安装的技巧. 一些技巧是针对特定的安装环境的,但这些思路是通用的. 我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧.MySQL 服务器硬件和操作系统调节:1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内翻译 2014-03-10 17:08:43 · 520 阅读 · 0 评论 -
JDBC常见面试题(二)
JDBC的保存点(Savepoint)是什么,如何使用?有时候事务包含了一组语句,而我们希望回滚到这个事务的某个特定的点。JDBC的保存点可以用来生成事务的一个检查点,使得事务可以回滚到这个检查点。一旦事务提交或者回滚了,它生成的任何保存点都会自动释放并失效。回滚事务到某个特定的保存点后,这个保存点后所有其它的保存点会自动释放并且失效。可以读下这个了解更多关于JDBC Savepoint的转载 2014-03-19 09:06:31 · 1654 阅读 · 0 评论 -
JDBC常见面试试题(一)
什么是JDBC,在什么时候会用到它?JDBC的全称是Java DataBase Connection,也就是Java数据库连接,我们可以用它来操作关系型数据库。JDBC接口及相关类在java.sql包和javax.sql包里。我们可以用它来连接数据库,执行SQL查询,存储过程,并处理返回的结果。JDBC接口让Java程序和JDBC驱动实现了松耦合,使得切换不同的数据库变得更加简单。转载 2014-03-18 11:25:39 · 3295 阅读 · 1 评论 -
SQL语句总结
SQL语句中常用关键词及其解释如下:1)SELECT将资料从数据库中的表格内选出,两个关键字:从 (FROM) 数据库中的表格内选出 (SELECT)。语法为SELECT "栏位名" FROM "表格名"。2)DISTINCT在上述 SELECT 关键词后加上一个 DISTINCT 就可以去除选择出来的栏位中的重复,从而完成求得这个表格/栏位内有哪些不同的值的功能。语法为原创 2014-03-21 22:32:11 · 895 阅读 · 0 评论 -
大数据查询的常见优化技巧
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id原创 2014-04-18 14:36:05 · 817 阅读 · 0 评论 -
Mysql里常用的SQL Mode
与其他数据库不同,MySQL 可以运行不同的SQL Mode(SQL 模式)下。SQL Mode 定义了MySQL 应支持的SQL 语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。在MySQL 中,SQL Mode 常用来解决下面几类问题。 1、通过设置SQL Mode,可以完成不同严格程度的数据校验,有效地保障数据准确性。 2、通过设置SQL Mode 为AN原创 2014-03-05 11:22:27 · 826 阅读 · 0 评论 -
应用开发中防止SQL注入采取的应对措施
对于上面提到的SQL 注入隐患,后果可想而知是很严重的,轻则获得数据信息,重则可以将数据进行非法更改。那么对这种情况有没有防范措施呢?1、PrepareStatement+Bind-variable对Java、JSP 开发的应用,可以使用PrepareStatement+Bind-variable 来防止SQL 注入,另外从PHP 5 开始,也在扩展的MySQLI 中支持Prepare原创 2014-03-04 21:58:08 · 1149 阅读 · 0 评论 -
mysql常见的数值函数
MySQL 中的常用数值函数函数 功能ABS(x) 返回x 的绝对值CEIL(x) 返回大于x 的最大整数值FLOOR(x) 返回小于x 的最大整数值MOD(x,y) 返回x/y 的模原创 2014-03-04 11:28:25 · 706 阅读 · 0 评论 -
mysql导入及导出txt文件
导入数据库:mysql>use databasename;mysql>load data infile "E:\\test\\test.txt" into table tablename fields terminated by '|' lines terminated by '\r\n';如果没有换行则:mysql>load data infile "E:\\test\\te原创 2013-10-21 20:24:29 · 3622 阅读 · 0 评论 -
MySQL 中的常用日期时间函数
函数 功能CURDATE() 返回当前日期CURTIME() 返回当前时间原创 2014-03-04 14:28:07 · 716 阅读 · 0 评论 -
SQL注入
结构化查询语言(SQL)是一种用来和数据库交互的文本语言。SQL Injection 就是利用某些数据库的外部接口将用户数据插入到实际的数据库操作语言(SQL)当中,从而达到入侵数据库乃至操作系统的目的。它的产生主要是由于程序对用户输入的数据没有进行严格的过滤,导致非法数据库查询语句的执行。SQL 注入(SQL Injection)攻击具有很大的危害,攻击者可以利用它读取、修改或者原创 2014-03-04 21:45:36 · 735 阅读 · 0 评论 -
如何选择合适的Mysql存储引擎
下面是常用存储引擎的适用环境 MyISAM:默认的MySQL 插件式存储引擎。如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常适合的。MyISAM 是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。. InnoDB:用于事务处理应用程序,支持外键。如果应用对事务的完整性有比较高的原创 2014-03-04 15:24:14 · 1086 阅读 · 0 评论 -
mysql的存储引擎
需要特别注意,存储引擎是基于表的,而不是数据库的,常见的引擎有以下几种1、InnoDB存储引擎2、MyISAM存储引擎3、NDB存储引擎4、Memory存储引擎5、Archive存储引擎6、Federated存储引擎7、Maria存储引擎8、其他的Merge、CSV、Sphinx、Infobright引擎等原创 2014-03-03 22:12:58 · 667 阅读 · 0 评论 -
Mysql通过show status 命令了解各种SQL 的执行频率
MySQL 客户端连接成功后,通过show [session|global]status 命令可以提供服务器状态信息,也可以在操作系统上使用mysqladmin extended-status 命令获得这些消息。show[session|global] status 可以根据需要加上参数“session”或者“global”来显示session 级(当前连接)的统计结果和global原创 2014-03-05 14:43:50 · 2475 阅读 · 0 评论 -
Mysql查看索引使用情况
如果索引正在工作,Handler_read_key 的值将很高,这个值代表了一个行被索引值读的次数,很低的值表明增加索引得到的性能改善不高,因为索引并不经常使用。Handler_read_rnd_next 的值高则意味着查询运行低效,并且应该建立索引补救。这个值的含义是在数据文件中读下一行的请求数。如果正进行大量的表扫描,Handler_read_rnd_next 的值较高,则通常原创 2014-03-05 15:29:30 · 3160 阅读 · 0 评论 -
Mysql通过EXPLAIN 分析低效SQL 的执行计划
通过以上步骤查询到效率低的SQL 语句后,可以通过EXPLAIN 或者DESC 命令获取MySQL如何执行SELECT 语句的信息,包括在SELECT 语句执行过程中表如何连接和连接的顺序,比如想计算2006 年所有公司的销售额,需要关联sales 表和company 表,并且对moneys 字段做求和(sum)操作,相应SQL 的执行计划如下:mysql> explain sel原创 2014-03-05 15:02:45 · 1205 阅读 · 0 评论 -
Mysql常用的几种SQL提示
SQL 提示(SQL HINT)是优化数据库的一个重要手段,简单来说就是在SQL 语句中加入一些人为的提示来达到优化操作的目的。下面是一个使用SQL 提示的例子:SELECT SQL_BUFFER_RESULTS * FROM...这个语句将强制MySQL 生成一个临时结果集。只要临时结果集生成后,所有表上的锁定均被释放。这能在遇到表锁定问题时或要花很长时间将结果传给客户端时有原创 2014-03-05 15:53:00 · 1033 阅读 · 0 评论 -
Mysql里面BTREE 索引与HASH 索引
MEMORY 存储引擎的表可以选择使用BTREE 索引或者HASH 索引,两种不同类型的索引各有其不同的适用范围。HASH 索引有一些重要的特征需要在使用的时候特别注意,如下所示。 只用于使用=或操作符的等式比较。 优化器不能使用HASH 索引来加速ORDER BY 操作。 MySQL 不能确定在两个值之间大约有多少行。如果将一个MyISAM 表改为HASH 索引的M原创 2014-03-04 19:21:35 · 1563 阅读 · 0 评论 -
Mysql索引是如何实现的
在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。 MyISAM索引实现 MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:这里设表一共有三列,假设我们以Col1为主键,则图8是一个MyISAM表的主原创 2014-04-15 10:09:30 · 1156 阅读 · 1 评论