数据库 标签

sql优化常见策略

  |   0 评论   |   0 浏览

常见的优化策略 从最核心的开始说起 1. 选择正确的存储引擎 这个是最核心的了,选错存储引擎那其他的都是白忙活了。那最常用的就是InnoDB了,那如果事务性要求不高的话,可以选择myisam了。 2. 不能用存在null值的列做索引 不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。 3. where后面的索引不一定100%有效 任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。 尽量避免null类型的列 使得索引、索引统计、值比较都比较复杂、使用更多的存储空间、null的列为索引时,每个索引记录需要额外一个字节、 datetime timestamp timestamp只使用datetime一半的存储空间。并且会根据时区变化。 整数类型 tinyint、smallint、mediumint、int、bigint分别使用8/16/24、32/64位存储空间 unsigned属性表示不允....

利用redis实现分布式锁

  |   0 评论   |   0 浏览

利用redis来实现分布式锁。一般就用setnx和getset两个命令。 NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists. getset是同步的 java之jedis实现 expireMsecs 锁持有超时,防止线程在入锁以后,无限的执行下去,让锁无法释放 timeoutMsecs 锁等待超时,防止线程饥饿,永远没有入锁执行代码的机会 代码如下: private int timeoutMsecs private String lockKey private static long expireMsecs = 1000 * 60 * 5 // min 锁持有超时 // timeoutMsecs 表示锁等待超时 public JedisLock(Integer timeoutMsecs, String lockKey) { this.timeoutMsecs = timeoutMsecs this.lockKey = lockKey } public synchronized boolean acquire(Jedis jedis) th....

sql注入分析

  |   0 评论   |   0 浏览

##1. 什么是sql注入 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过让原SQL改变了语义,达到欺骗服务器执行恶意的SQL命令。其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。 ##2. SQL注入实例 很多Web开发者没有意识到SQL查询是可以被篡改的,从而把SQL查询当作可信任的命令。殊不知,SQL查询是可以绕开访问控制,从而绕过身份验证和权限检查的。更有甚者,有可能通过SQL查询去运行主机系统级的命令。 下面将通过一些真实的例子来详细讲解SQL注入的方式。 考虑以下简单的登录表单: <form action="/login" method="POST"> <p>Username: <input type="text" name="username" /></p> <p>Password: <input type="password" name="password" /></p> <p><inp....

数据库索引-复制-事务详谈

  |   0 评论   |   0 浏览

数据库学习笔记 标签(空格分隔): 数据库 数据库 1. 数据库优化的一些手段 尽量避免null类型的列 使得索引、索引统计、值比较都比较复杂、使用更多的存储空间、null的列为索引时,每个索引记录需要额外一个字节、 datetime timestamp timestamp只使用datetime一半的存储空间。并且会根据时区变化。 整数类型 tinyint、smallint、mediumint、int、bigint分别使用8/16/24、32/64位存储空间 unsigned属性表示不允许负值 字符串类型 varchar char的区别 varchar存储可变长的字符串、需要用额外1、2一个字节记录字符串长度信息、适合最大长度比平均长度大很多。。列的更新很少,碎片不是问题 char是定长的,适合经常变更的数据、因为不容易产生碎片。也适合非常短的列、比如char(1)存储y和n的值,char只需要一个字节,而varchar需要两个字节,额外一个字节存储长度信息 2. 索引知识 分为btree索引和哈希索引 数据库索引的实现 为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入....