随笔分类 - mysql
mysql数据库
摘要:什么是数据库的瓶颈? IO瓶颈和CPU瓶颈都会导致数据库的活跃连接数增加,临近数据库可承载活跃连接数的阀值,即可用的数据库连接少甚至无连接可用(崩溃)。 如何应对IO瓶颈? ①磁盘读IO瓶颈,数据太多,数据库缓存放不下,每次查询会产生大量的IO导致查询速度低 -> 可考虑分库和垂直分表。 ②网络IO
阅读全文
摘要:1、为什么一定要设一个主键? 因为不设主键,innodb也会帮你生成一个隐形列作为自增主键。反正都要生成主键,自己指定主键可以显示用上主键索引,提高查询效率。 2、主键是用自增还是UUID(随机)? 自增。innodb住的主键是聚簇索引,如果主键是自增的,每次插入新的记录,记录就会顺序添加到当前索引
阅读全文
摘要:聚簇索引:将数据存储与索引放在一块,找到索引也就找到了数据。 非聚簇索引:将数据存储与索引分开,索引结构的叶子节点指向数据的对应行。myisam通过key_buffer把索引先缓存在内存中,访问数据时,在内存中直接搜索索引,然后通过索引找到磁盘对应数据。 注意:innodb中,在聚簇索引之上创建的索
阅读全文
摘要:MySQL的功能架构分为3个部分,分别是应用层、逻辑层、物理层。 应用层:主要负责与客户端进行交互,建立链接,记住链接状态,返回数据,响应请求。 逻辑层:主要负责查询处理、事务管理等其他数据库功能处理。以查询为例,数据库接收到查询SQL之后,数据库会立即分配一个线程对其进行处理,第一步查询处理器会对
阅读全文
摘要:1、优先选择符合存储需要最小的数据类型。 因为列的字段越大,建立索引所需要的空间也越大,这样一页中能存储的索引节点的数量越少,在遍历时需要的IO次数就越多,索引的性能就越差。 2、避免使用text、blob数据类型 text类型可以存储64kb数据,mysql内存临时表不支持text、blob这样的
阅读全文
摘要:1、utf8_genera_ci:不区分大小写,但是某些西欧字符和拉丁字符不区分,比如ä=a 2、utf8_bin:其将字符串中的每一个字符用二进制数据存储,可以区分ä<>a,区分大小写,
阅读全文
摘要:1、数据库设计方面 对尽量避免全表扫描,首先应考虑在where及order by 设计的列上建立索引。 尽量避免在where字句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描。 当索引列由大量数据重复时,查询可能不会利用索引,比如【性别】这种列建了索引也对查询效率起不了作用。
阅读全文
摘要:mysql 建表时需要选择的存储引擎们,到底有什么区别呢,以下是我从其他文章中看到的很好的总结,因此搬过来记录 特点MyisamBDBMemoryInnoDBArchive 存储限制 没有 没有 有 64TB 没有 事务安全 支持 支持 锁机制 表锁 页锁 表锁 行锁 行锁 B树索引 支持 支持 支
阅读全文
摘要:1、聚集索引和非聚集索引 索引一般分为聚集索引和非聚集索引,聚集索引速度很快,但只能建一个,非聚集索引虽然没有聚集索引快,但可以建多个,比全表扫描快。 2、如何建立高效的索引 关联条件上建立索引,比如 select * from T1 jion T2 on T1.a=T2.b 那么在关联条件on后面
阅读全文
摘要:1、使用DISTINCT去重 在重复量比较高的表中,使用DISTINCT可以有效提高查询效率,而在重复量比较低的表中,使用DISTINCT会严重降低查询效率。并不是所有的DISTINCT都是降低效率的,你得提前判断数据的重复量。 2、GROUP BY 和DISTINCT对比 在重复量比较高的字段中,
阅读全文
摘要:今天我们来讲讲数库设计的三大范式: 1NF(第一范式)[确保每列保持原子性] 第一范式是只数据库表中的每一项都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。第一范式的模式要求属性值不可再分裂为更小部分,及属性项不能是属性组合或是由一组属性构成。 简
阅读全文
摘要:集合有交集,并集,差集几种。在SQL中的关键字为以下几种 INTERSECT 交集 返回 INTERSECT 操作数左右两边的两个查询都返回的所有非重复值。 eg: SELECT id FROM table1 INTERSECT SELECT pid FROM table2; UNION 并集 UN
阅读全文
摘要:ASCII(字符串) 返回字符串表达式中最左侧的ASCII代码值,eg :SELECT ASCII('S') 得到结果83 CHAR(字符) 将整数类型的ASCII值转换为对应的字符,eg:SELECT CHAR(83) 得到结果S LEN(需要获取长度的字符串) 返回字符串的长度,eg:SELEC
阅读全文
摘要:事务是在数据库上按照一定的逻辑顺序执行的任务序列,既可以由用户手动执行,也可以由某种数据库程序自动执行。事务实际上就是对数据库的一个或多个更改。 事务具有以下四个标准属性,常用缩略词ACID来表示: 原子性:保证任务中的所有操作都执行完毕;否则,事务会在出现错误时终止,并回滚之前所有操作回到原始状态
阅读全文
摘要:COUNT()函数返回符合指定条件的行数。 语法: COUNT(column) 函数返回指定列的值得数目(null不计入其中) COUNT(*) 函数返回表中的记录数 COUNT(DISTINCT column) 函数返回指定列的不同值的数目 eg. SELECT COUNT(title) wher
阅读全文
摘要:UNION运算符用于组合两个或者更多SELECT语句的结果集。注意以下三点 UNION中的每个SELECT语句必须具有相同的列数 这些列必须具有相似的数据类型 每个SELECT语句中的列也必须以相同的顺序排列 语法: SELECT columns FROM table1 UNION SELECT c
阅读全文
摘要:在WHERE子句中使用LIKE运算符来搜索列中的指定模式 有三个通配符与LIKE运算符一起使用 %,百分号表示零个,一个或者多个字符。 _,下划线表示单个字符。 [字符列表],[!字符列表] 注:百分号和下划线可以组合使用 例子: LIKE运算符 描述 WHERE `name` LIKE "a%"
阅读全文
摘要:数据库运行时有先后顺序,关键字顺序如下 1、FROM 2、ON 3、JOIN 4、WHERE 5、GROUP BY 6、WITH 7、HAVING 8、SELECT 9、DISTINCT 10、ORDER BY
阅读全文
摘要:联表查询的关键字为 join...on...,常见的join类型为以下几种 inner join 从多个表中返回满足join条件的所有行。如果表中有至少一个匹配,则返回行。 语法:select column_names from t1 inner join t2 on t1.column_name
阅读全文
浙公网安备 33010602011771号