zoukankan      html  css  js  c++  java
  • 数据库相关知识整理

    1、数据库索引
         索引是对数据库表中一个或者多个列的值进行排序的数据结构,以协助快速查询、更新数据库表中的数据。
    2、事务的特性
         事务简单来说:一个Session中所进行所有的操作,要么同时成功,要么同时失败。
         作为单个逻辑工作单位执行的一系列操作,满足四大特性
         ①、原子性:事务作为一个整体被执行,要么全部执行,要么全部不执行
         ②、一致性:保证数据库状态从一个一致状态转为另一个一致状态
         ③、隔离性:多个事务并发执行时,一个事务的执行不应该影响其他事务的执行
         ④、持久性:一个事务一旦提交,对数据库的修改应该永久保存
    3、事务的隔离级别
         隔离级别决定一个session中的事务可能对另一个session中的事务的影响。ANSI标准定义了4个隔离级别,MySql的InnoDB都支持,分别是:
        ①、读未提交(READ UNCOMMITTED):最低级别的隔离,运行一个事务读取另外一个事务还未提交的数据,这样可能性能提高,但是会导致脏读
        ②、读已提交(READ COMMITTED):在一个事务中只允许对其他事务已经提交的记录可见,该隔离级别不能避免不可重复读问题
        ③、可重复读(REPEATABLE READ):在一个事务开始后,其他事务对数据库的修改在本事务中不可见,知道本事务提交或者回滚。但是,其他事务的插入/删除操作是对该事务是可见的,也就是说,该隔离级别并不能避免幻象读问题。在一个事务中重复查询的结果一样,除非本身事务中更新数据库
        ④、序列化(SERIALIZABLE):最高级别的隔离,至允许事务串行执行
    4、MySql的隔离级别及事务支持
         MySql的默认隔离级别是可重复读
         MySql的事务支持不是绑定在MySql服务器本身,而是与存储引擎相关:
         MyISAM引擎:不支持事务,用于只读程序提高性能
         InnoDB引擎:MySql5.5后的默认引擎,支持ACID事务,行级锁、并发
         Berkeley DB引擎:支持事务
    5、drop、delete、truncate的区别
         drop直接删除表;delete删除表中数据,可带where字句;truncate清空表中数据,再插入时自增id又从1开始
    6、SQL语句优化策略
         ①、优化insert语句,一次插入多值;
         ②、避免在where子句中使用!=或者<>操作符,否则会放弃使用索引进行全表扫描
         ③、避免在where子句中对字段进行null值判断,否则会放弃使用索引进行全表扫描
         ④、优化嵌套查询,子查询可以用join代替
         ⑤、使用exists代替in
         ⑥、避免使用类似select * from查询
         ⑦、避免以%开头的like模糊匹配
         ⑧、避免数据类型隐式转化,如varchar不加单引号会自动转化为int型
         ⑨、联合索引,需要满足最左匹配原则,如联合索引col1,col2,col3,则索引生效的情况包括col1,col和col2,col1和col2和col3,类似col2和col3这种则索引失效。

  • 相关阅读:
    27. Remove Element
    26. Remove Duplicates from Sorted Array
    643. Maximum Average Subarray I
    674. Longest Continuous Increasing Subsequence
    1. Two Sum
    217. Contains Duplicate
    448. Find All Numbers Disappeared in an Array
    566. Reshape the Matrix
    628. Maximum Product of Three Numbers
    UVa 1349 Optimal Bus Route Design (最佳完美匹配)
  • 原文地址:https://www.cnblogs.com/conswin/p/10402597.html
Copyright © 2011-2022 走看看