博客
关于我
08_MySQL笔记-锁-常量-DISTINCT-DESC-WHERE
阅读量:785 次
发布时间:2019-03-25

本文共 2492 字,大约阅读时间需要 8 分钟。

Session是什么?

我们在学习时可能会经常遇到会话(Session)这个概念,它在应用程序和网络通信中起到关键作用。与我们日常交流类似,会话是一种连接的形式,允许不同的计算机之间进行数据交换。

Session的建立方式有两种:一种是短连接,建立后会立即断开;另一种是长连接,保持不断的连接状态,除非人为关闭。具体来说,MySQL连接分为短连接和长连接两种类型。短连接通过三次握手建立,传输数据后就断开。而长连接则保持一段时间,效率更高。

缓存在计算机系统中起着重要作用,尤其是在数据库领域,缓存不仅加速数据访问,还能节省内存和系统资源。缓存分为内存缓存和磁盘缓存,内存缓存主要用于写操作,而磁盘缓存则负责读操作。

内存中存在一个重要的缓存池,用于存放数据库的数据页。缓冲池的大小可以达到物理内存的80%,这意味着在实际应用中,缓冲池的容量通常非常大。为了合理管理缓冲池,MySQL采用最近最少使用(LRU)算法来回收最不常用的页面。

脏读是一个敏感的数据库概念。脏读指的是一个事务读取另一个未提交的修改数据,这会导致数据不一致。为了防止脏读,MySQL默认采用严格的数据隔离机制,确保事务具有高一致性。

在并发系统中,锁机制至关重要。锁的粒度可以是表锁、行锁或其他更细粒度的锁。读锁和写锁是最常见的锁类型,通过共享锁和排他锁机制实现数据保护。为了保持数据一致性,特别是在大并发场景下,加锁是必要的。

死锁指的是两个进程因竞争资源而无法继续执行的状态。防止单过程死锁,可以通过订单的检查机制或优化事务执行顺序来避免。活锁则是指进程因某些条件未满足而无法继续执行,但因过于频繁而难以自行解决。

在实际操作中,使用lock tables命令可以实现表锁的互斥操作。比如lock tables t1 write;会阻止其他会话对t1表执行读或写操作。为了释放锁,可以使用unlock tables;命令。

事务处理是数据库中的核心机制。并发事务可能带来脏读、幻读、不可重复性和丢失更新等问题。为了避免这些风险,事务需要有隔离级别。MySQL提供了四种隔离级别:读已提交、读未提交、可重复读和串行化(Serializable)。

默认情况下,MySQL的事务隔离级别是可重复读(Repeatable Read),这是一个兼具性能和一致性的平衡。要查看当前连接的事务隔离级别,可以使用SELECT @@tx_isolation;命令。

在实际生态中,监控数据库的-performance非常重要。可以使用show processlist;来查看当前的连接和事务状态。要想提升数据库性能,可以通过调整innodb_buffer_pool_size等参数来优化缓存策略。

事务的核心作用在于确保数据库的一致性。在Python中,处理数据库事务时需要手动使用db.commit()db.rollback()来控制。根据具体需求,可以设置autocommit = Trueautocommit = False来定义提交频率。

数据库备份是维护数据完整性的重要手段。最常用的备份工具是mysqldump。可以通过命令如mysqldump -u root -p '123456' jd > jd.sql来备份指定数据库。要备份所有数据库,可以使用mysqldump --all-databases选项。

在实际应用中,数据的处理往往需要事务支持。例如插入多个记录时,通过事务来确保数据原子性。如果在处理过程中遇到错误,可以通过rollback来回滚操作,保证数据一致性。

结果集(Result Set)是数据库查询的返回值类型。当执行SELECT语句时,返回的结果会是一个结果集。结果集的列标题是由SELECT子句中的列名或表达式决定的,是左对齐的。

字符集和校对规则设置会影响数据库的性能和查询结果。默认字符集通常是utf8,而校对规则默认设置为utf8_general_ci,表示大小写不敏感的全局比较。这可以通过在创建表时指定字符集和校对规则来优化数据库的查询性能。

在处理数据库时,需要注意使用合适的字符集合和校对规则。通过show character set;show collation;命令,可以查看数据库支持的所有字符集和校对规则。必要时,可以手动设置character_setcollation属性以优化查询结果。

日期和时间的处理在数据库中至关重要。国家日期标准的支持可以通过设置正确的字符集来实现。默认情况下,时间戳字面量会自动基于客户端的时区进行转换。

为了提高查询效率,可以结合DISTINCT关键字来去除重复的数据行。GROUP BYHAVING子句则是进一步从GROUP BY的结果中筛选数据。

通过算术运算符,可以对数据库中的数据进行复杂计算。在实际应用中,NULL值的处理需要注意,所以算术表达式中包含NULL会导致结果为NULL

对于字符串连接,CONCATCONCAT_WS函数可以满足需求。CONCAT_WS函数支持指定分隔符,非常适合多个字段之间的连接操作。

DESC关键字用于倒序排序。默认情况下,ORDER BY的排序顺序是升序,通过DESC可以改变为降序。在实际应用中,可能需要结合LIMITOFFSET来限制结果的范围。

WHERE子句中,BETWEENIN操作符是常用的范围查询工具。BETWEEN适用于连续的范围值,而IN操作符则通过列表对查询结果进行过滤。

字符串模式匹配可以通过LIKEREGEXP操作符实现。LIKE支持简单的模式匹配,而REGEXP功能更强大,可以通过正则表达式进行高级匹配。

逻辑操作符在WHERE条件中起着重要作用。ANDOR用于组合多个条件,NOT用于对单个条件进行否定,XOR则用于逻辑异或操作。在实际应用中,这些操作符的使用需要谨慎以避免潜在的错误。

通过理解和掌握这些数据库操作的原理,可以更高效地使用数据库管理系统。事务处理、锁机制、数据备份和优化等都是提升数据库性能和一致性的关键因素。

转载地址:http://tjtuk.baihongyu.com/

你可能感兴趣的文章
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>
NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
查看>>
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_01---大数据之Nifi工作笔记0033
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002---大数据之Nifi工作笔记0069
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>