
mysql
文章平均质量分 75
致守
这个作者很懒,什么都没留下…
展开
-
mysql多线程访问
3 mysql_query()执行的SQL语句是一个以‘/0’结尾的字符串,而mysql_real_query()执行的字符串长度是参数指定的,因此,前者不能不能包含二进制数据(二进制数据中可能会包含‘/0’,导致被认为到达字符串末尾)15 避免尝试去锁一个不存在的记录,for update语句where条件请使用主键(锁定一个非主键,会默认同时锁定一个主键,这是造成很多死锁的原因)。(2)一个连接上,要确保在mysql_query()和mysql_store_result()之间,只有一个线程。转载 2024-05-29 14:45:13 · 40 阅读 · 0 评论 -
基于C API的MySQL数据库多线程访问方法
最后需要有一点说明,使用C API访问数据库可以提高数据库的访问效率,但并不是所有的数据库项目都适合这种方式,该方式适合需要大量实时并发处理的数据库项目,例如网络游戏的数据库项目,对于有此需求的数据。Windows版本的MySQL C API函数都是线程安全的,除了mysql_library_init(),而我们刚才的代码中使用的mysql_init()函数会自动调用函数mysql_library_init()来初始化MySQL库,因此在多线程环境下,需要不同的初始化代码和清理代码。转载 2024-05-29 14:43:43 · 160 阅读 · 0 评论 -
【史上最全】MySQL各种锁详解:一文搞懂MySQL的各种锁
隐式上锁(默认,自动加锁自动释放)显式上锁(手动)解锁(手动)1. 提交事务(commit)2. 回滚事务(rollback)3. kill 阻塞进程为什么上了写锁,别的事务还可以读操作?因为InnoDB有,可以使用快照读,而不会被阻塞。单个行记录上的锁(点查)Record Lock总是会去锁住索引记录,如果InnoDB存储引擎表建立的时候没有设置任何一个索引,这时InnoDB存储引擎会使用隐式的主键来进行锁定。转载 2024-05-29 14:41:02 · 6530 阅读 · 0 评论 -
MYSQL有哪些存储引擎,各自优缺点
不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。在MySQL中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。存储表中的数据时,每张表的存储都按逐渐顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6B的ROWID,并以此作为主键。不同存储引擎都有各自的特点,以适应不同的需求,如下表所示,为了做出选择,首先需要考虑每一个存储引擎提供了哪些不同的功能。只支持固定大小的行。转载 2024-05-29 11:15:07 · 147 阅读 · 0 评论 -
MySQL 异常: “Host ‘xxx‘ is not allowed to connect to this MySQL server“
修改host字段的值,将localhost修改成需要远程连接数据库的ip地址。修改成%表示,所有主机都可以通过root用户访问数据库。为了方便,我直接修改成%。再次查看user表, 修改成功,输入命令mysql> FLUSH PRIVILEGES;回车使刚才的修改生效,再次远程连接数据库成功。例如,你想root使用mypassword从任何主机连接到mysql服务器的话。为了让数据库支持远程主机访问,有两种方法可以开启远程访问功能。回车使刚才的修改生效,再次远程连接数据库成功。转载 2024-05-28 14:10:41 · 64 阅读 · 0 评论 -
详细解决linux安装mysql后登录报错:Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)
systemctl status mysqld #查看mysql的服务状态systemctl restart mysqld #重启mysql服务mysql -u root -p #重新登录。转载 2024-05-28 11:16:34 · 2301 阅读 · 1 评论 -
处理 mysqld: unrecognized service 的方案
在本文中,我们详细讨论了错误的产生原因,并提供了一些常见的解决方案。由于不同系统和环境的差异,解决该问题的方法可能会有所不同。处理 mysqld: unrecognized service 的方案|极客笔记 (deepinout.com)转载 2024-05-28 11:15:22 · 1064 阅读 · 0 评论 -
在Ubuntu 22.04 LTS 上安装 MySQL两种方式:在线方式和离线方式
Ubuntu是一款基于Linux操作系统的免费开源发行版,广受欢迎。它以稳定性、安全性和用户友好性而闻名,适用于桌面和服务器环境。Ubuntu提供了大量的软件包和应用程序,拥有庞大的社区支持和活跃的开发者社区。它的长期支持(LTS)版本获得5年的安全更新,为企业和个人提供了可靠的选择。Ubuntu的桌面版本具有直观的用户界面,而服务器版本则适用于构建强大的Web服务器和云计算平台。当你需要在Ubuntu上安装MySQL时,有两种主要的方式:在线安装和离线安装。转载 2024-05-28 11:13:06 · 647 阅读 · 0 评论 -
Mysql接口API相关函数详细使用说明——mysql_init,mysql_real_connect,mysql_query,mysql_close等相关
初始化检索,以便于后面一行一行的读取结果集,而它本身并没有从服务器读取任何数据,这种方式较之第一种速度更快且所需内存更少,但它会绑定服务器,阻止其他线程更新任何表,而且必须重复执行。读取数据,直至返回NULL,否则未读取的行会在下一次查询时作为结果的一部分返回,故经常我们使用mysql_store_result。如果mysql_init()分配了新的对象,应当在程序中调用mysql_close() 来关闭连接,以释放对象。返回的数据称为“数据集”,在C的API里对应的就是。这个结构代表返回行的一个查询的。转载 2023-04-11 16:09:11 · 3452 阅读 · 0 评论 -
25.2.15. 如何生成线程式客户端
(下面关于mysql_real_connect()的说明实际上也适用于mysql_connect(),但由于mysql_connect()已不再被重视,总应尽量使用mysql_real_connect())。在线程调用mysql_init()或mysql_connect()之前,如果调用了MySQL函数,该线程将没有所需的线程类变量,而且你很可能或早或晚结束于内核转储。调用mysql_init()或mysql_connect()时,MySQL会为调试库使用的线程创建与线程相关的变量(尤其)。转载 2023-04-10 19:53:46 · 69 阅读 · 0 评论 -
线程安全函数在多进程情况下使用的问题
父进程存在线程调用localtime_r函数,那么当父进程fork子进程的时候,可能会出现某一个线程已经lock了localtime_r的锁,这时候子进程继承了这个已经标记为lock的锁。Localtime_r使用了锁机制来保证该函数是线程安全的,但就是这个thread-safe导致了问题的发生。所有在多进程环境下使用thread-safe函数的时候,需要避免这种问题的出现。Linux下父进程在fork子进程的时候,子进程会继承父进程的变量。从上面的运行结果可以看出,重启运行20次后,出现了bug。转载 2023-04-10 19:52:20 · 159 阅读 · 0 评论 -
mysql 编程
if((error_code == 2013) || (error_code == 2006)) //2006 mysql服务器不可用,2013查询过程中,丢失链接。//构建查询sql语句。while((row = mysql_fetch_row(result_))) //遍历查询结果中的各行记录。转载 2023-04-10 19:51:24 · 520 阅读 · 0 评论 -
mysql的C API函数简介
因此,要么你在增加任何线程之前调用mysql_library_init(),要么使用mutex来保护这个调用(不管是直接调用mysql_library_init()还是间接通过调用mysql_init()调用)。mysql_store_result()的其中一个优点是,因为所有的行已经从数据库中获取,因此你不仅可以顺序的获取每一行,还可以使用 mysql_data_seek()或者mysql_row_seek()来改变当前在result集合中读取的位置(行号)。全部的总行数你是不知道的,直到全部检索完毕。转载 2023-04-10 19:43:45 · 371 阅读 · 0 评论 -
搞定linux上MySQL编程(六):C语言编写MySQL程序(结)
mysql_library_init()和mysql_library_end()实际上是#define符号,这类符号使得它们等效于mysql_server_init()和mysql_server_end(),但其名称更清楚地指明,无论应用程序使用的是mysqlclient或mysqld库,启动或结束MySQL库时,应调用它们。函数返回结果集中的行数,mysql_num_rows()的使用取决于是否采用了mysql_store_result()或mysql_use_result()来返回结果集。转载 2023-04-10 19:03:46 · 431 阅读 · 0 评论 -
MYSQL中MYSQL_INIT与MYSQL_CONNECT的线程安全问题
解决方法:在mysql_init时加锁,完成后解锁在connect。(这个方法我跑了两天也没出现堆栈,暂时认为是可行的。他们给出的解决方法也无法避免产生堆栈。在公司稳定性测试时,发现产生了。在init其中初始化了一些mysql句柄私有的数据。对某些数据进行修改,所以在上面例子中基本后出现堆栈。版权声明:本文为TDTO_O原创文章,遵循。版权协议,转载请附上原文出处链接和本声明。转载 2023-04-10 16:36:42 · 220 阅读 · 0 评论 -
mysql - 如果我为每个线程初始化一个 mysql 连接,mysql_query 是线程安全的吗?
我想知道的是 C api 线程安全的 mysql_query 或其他 mysql 函数具有以下条件:使用 libmysqlclient.so 但不使用 libmysqlclient_r.so 在每个线程中,在一个全局互斥锁的保护下调用mysql_init和mysql_real_connect,使每个线程获得一个mysql连接 使用每个线程自己的 mysql 连接在没有全局互斥锁保护的情况下调用 mysql_query 或其他 mysql 函数这是线程安全的吗?嗯,我认为是的,而且根据我的测试转载 2023-04-10 15:53:12 · 185 阅读 · 0 评论 -
mysql_query()函数的返回值详解
由上可以知道,mysql_query()执行sql语句时,并不是什么时候都要执行释放结果集,而是当某些操作产生了结果集,才调用mysql_free_result()释放;看手册时,一眼看上去,觉得mysql_query()函数返回的本来就是资源类型,可是为什么现在又是bool值了呢?我在操作mysql,插入数据时,关闭资源,PHP提示了一个warning。本篇文章主要介绍mysql_query()函数的返回值详解,感兴趣的朋友参考下,希望对大家有所帮助。千万级数据并发如何处理?转载 2022-10-25 18:23:01 · 7188 阅读 · 0 评论 -
一篇文章看懂mysql中varchar能存多少汉字、数字,以及varchar(100)和varchar(10)的区别
看完这篇文章,你能搞清楚以下问题:1、varchar(100)和varchar(10)的区别在哪里?2、varchar能存多少汉字、数字?3、varchar的最大长度是多少呢?4、字符、字节、位,之间的关系?5、mysql字段类型存储需要多少字节?接下来请仔细看,整理不易啊。一般初学会认为,二者占用的空间是一样的。比如说我存储5个char,二者都是实际占用了5个char了【不准确的想法:varchar在实际存储的时候会多一个byte用来存放长度】。但是深入一下,设计数据库的时候,二者一样吗?答案是否定的转载 2022-07-11 19:38:48 · 1809 阅读 · 0 评论 -
为什么 MySQL VARCHAR 小于 65535 · Why
当我们在 MySQL 中输入建表语句时,MySQL 会返回给我们错误,这表示 MySQL 并不支持创建 65535 字节长度的 VARCHAR 类型,最终测试发现最大可创建长度为 65533。为了更好地解释这个现象,我们需要了解 MySQL 内部的存储方式。字符编码在计算机中,字符编码是把字符集中的字符按照比特模式编码为指定集合中某一对象,以便文本在计算机中存储和通过网络传递,常见的字符编码方式有单字节编码 Latin1,双字节编码 GBK,变长字节编码 UTF-8 等。同一字符在不同的编码方式中可能会具有转载 2022-07-11 19:09:08 · 1097 阅读 · 0 评论 -
在 MySQL 中的 VARCHAR 和 TEXT 之间的选择
2020 年 2 月 19 日,由 Robert Gravelle 撰写 MySQL 5.0.3版的一项更改包括将VARCHAR字段的最大长度从255个字符增加到65,535个字符。这使得VARCHAR类型比以往任何时候都更类似于TEXT。对于那些设计数据库表的人来说,在VARCHAR和TEXT之间进行选择现在变得更加困难。在今天的博客中,我们将概述两者之间的主要区别,并确定在决定使用哪种数据类型时要考虑的因素。两种数据类型共享的最大长度为65,535个字符,但仍然存在一些差异:如果您需要TEXT类型,请转载 2022-07-11 19:02:32 · 4110 阅读 · 0 评论 -
C语言写二进制数据到mysql的Blob字段
-- 引子-- 由于调试需要,需直接往数据库里写入二进制数据。本来这些数据是由上层软件来写的,用的是C#。为了熟悉C语言的数据库操作,还是决定用C来写这段调试代码。概况: 表名:Task 涉及的字段及属性: NumDest:int(11) 用于存储目标数目 destIDs: blob 用于存储具体的目标ID废话不多说,入正题。--二进制数据写入-- 二进制数据最为常见的就是图片等一些文件信息。虽然我这里不是这类型信息,但确实是二进制数据。 具体步骤:1、转载 2022-07-11 18:37:24 · 1494 阅读 · 0 评论 -
mysql 存储二进制数据
晚上小研究了下MySQL存储于读取二进制数据的功能。关键步骤为以下三点:最重要的一点:存储二进制数据的表的类型需要是blob类型(按长度不同分为tiny, media, long) 插入二进制数据时需要利用mysql_real_escape_string函数对数据进行转换从数据库中读取二进制数据时需要利用mysql_fetch_length函数字段长度,该函数需要在mysql_fetch_row调用后才可以正常获取结果给出一个用C写的一个存储与读取字段的小例子,写的比较粗犷,见谅哈~先来一个插入:复制转载 2022-07-11 18:36:33 · 3764 阅读 · 0 评论 -
mysql text 优缺点
mysql的text/blob类型性能问题分析2021-12-26 18:11:44text/blob类型介绍BLOB和TEXT都是为存储很大的数据而设计的字符串数据类型,分别采用二进制和字符方式存储。实际上,它们分别属于两组不同的数据类型家族:TEXT:字符类型是TINYTEXT,SMALLTEXT,TEXT,MEDIUMTEXT,LONGTEXT;BLOB :对应的二进制类型是TINYBLOB,SMALLBLOB,BLOB,MEDIUMBLOB,LONGBLOB。BLOB是SMALLBOLB的同义转载 2022-07-11 13:16:10 · 1927 阅读 · 0 评论 -
【MySQL】varbinary 真的比varchar 更合适
一 前言 在讨论数据表字段设计的时候,有同学提出使用vabinary 代替 varchar ,部分开发不明所以,其实我也是。两者之间具体有什么区别?使用vabinary 代替 varchar 对业务有何优势?本文尝试从性能,数据大小,查询,创建索引等对比功能等方面进行研究,有不妥或者不到位之处还请各位读者朋友提示。二 对比测试2.1 测试环境 数据库版本 Percona Server 5.6.24-72.2-log2.2 定义 varchar(N) 字符串类型,用于存储变长字符串,使转载 2022-07-11 13:15:08 · 4591 阅读 · 4 评论 -
MySQL 的 varchar 与 text 对比
varchar 和 text 是 MySQL 字符存储争议比较多的领域,究竟大字段用那个比较好,我们来对比一下,然后自行选择。1.1 VARCHAR varchar 在 MySQL 中必须满足最大行宽度限制,也就是 65535(64k) 字节,而 varchar 本身是按字符串个数来定义的,在 MySQL 中使用 uft-8 字符集一个字符占用三个字节,所以单表 varchar 实际占用最大长度如下: 1)使用 utf-8 字符编码集 varchar 最大长度是 (65535-2)/3 = 218转载 2022-07-11 11:26:33 · 10590 阅读 · 0 评论 -
突然掉电,为啥MySQL也不会丢失数据?(收藏)
MySQL采用buffer机制,避免每次读写进行磁盘IO,提升效率:《缓冲池(buffer pool)》《写缓冲(change buffer)》《日志缓冲(log buffer)》MySQL的buffer一页的大小是16K,文件系统一页的大小是4K,也就是说,MySQL将buffer中一页数据刷入磁盘,要写4个文件系统里的页。如上图所示,MySQL里page=1的页,物理上对应磁盘上的1+2+3+4四个格。那么,问题来了,这个操作并非原子,如果执行到一半断电,会不会出现问题呢?会,这就是所谓的“页数据损坏转载 2022-07-04 16:28:57 · 392 阅读 · 0 评论 -
MySQL高级(进阶)SQL语句
目录一、实例准备--制表1. 表1(商店区域表)2. 表2(商店销售表)3. 表3(城市表)4. 表4(total_sales)二、SQL语句1. select2. distinct3. where4. and|or5. in6. between7. limit8. 通配符9. like10. order by三、函数1. 数学函数2. 聚合函数3. 字符串函数四、SQL查询语句1. group by2. having3. [as] 别名4. 子查询5. exists6. join--连接查询五、creat转载 2022-07-01 18:02:08 · 460 阅读 · 0 评论 -
MySQL高级SQL语句
对MySQL数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。例如只取10条数据、对查询结果进行排序或分组等等。使用SELECT语句可以将需要的数据从MySQL数据库中查询出来,如果对查询的结果进行排序,可以使用order by语句来对语句实现排序,并最终将排序的结果返回给用户。这个语句的排序不光可以针对某一个字段,也可以针对多个字段。语法: ASC是按照升序进行排序,是默认的排序方式,即ASC可以省略。 SELECT语句中如果没有指定具体的排序方式,则默认按ASC方式进行排序。转载 2022-07-01 17:29:56 · 3310 阅读 · 0 评论 -
关于SQL+NoSQL : NewSQL数据库
一、什么是数据库?一般一个数据库系统(Database System)可分为两个部分:数据库 就是 有组织的数据集合 ,存储在一个或多个磁盘文件中,俗称「数据的仓库」。广义上来讲,只要能储存数据的都能算数据库(如txt文档、Excel表格等)。数据管理系统 就是 操作和管理数据库的应用软件,用于建立、使用和维护数据库(持久化存储、优化读写、保证数据的有效性等)。狭义上来讲,我们说的“数据库”,通常都是指「数据库管理系统 (DBMS)」。二、为什么要用数据库?1. 如果数据保存到内存里:2. 如果数据保存到文转载 2022-06-27 17:45:24 · 1367 阅读 · 0 评论 -
MYSQL操作+C语言API
2.建数据库default charset=utf8使数据库可以使用中文。4.建表5.查看6.删除7.插入8.更新二、C语言API1.mysql_init2.mysql_real_connect3.mysql_real_query4.mysql_store_result5.mysql-num_rows6.mysql_fetch_row三、关于聊转载 2022-06-27 17:43:14 · 318 阅读 · 0 评论 -
mysql索引数据结构
什么是索引?索引就是排好序的数据结构,可以帮助我们快速的查找到数据推荐一个网站,可以演示各种数据结构:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html---------------------------------------------------------------图解几种数据结构:二叉树:如果数据是单边增长的情况 那么出现的就是和链表一样的数据结构了,树高度大红黑树:在二叉树的基础上多了树平.转载 2022-01-11 11:13:46 · 164 阅读 · 0 评论 -
MySQL索引背后的数据结构及算法原理
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。第二部分结合MySQL数据库中MyIS转载 2022-01-11 10:53:20 · 115 阅读 · 0 评论 -
freetds简介、安装、配置及使用介绍
什么是FreeTDS 简单的说FreeTDS是一个程序库,可以实现在Linux系统下访问微软的SQL数据库! FreeTDS 是一个开源(如果你喜欢可以称为自由)的程序库,是TDS(表列数据流 )协议的再次实现。它可以被用在Sybase的db-lib或者ct-lib库。它也包含一个ODBC的库。允许许多开源的应用软件比如Perl和PHP(或者你自己的c或C++程序)去连接到Sybase或 Microsoft SQL服务器。FreeTDS 以源码的形式被发布,几乎可以在任何操作系统上编译。意味着Uni..转载 2021-10-15 11:19:27 · 6106 阅读 · 0 评论 -
MySQL迁移数据库(mysqldump)
一、导出导入所有数据库的数据 1.导出 mysqldump-u root -p123456--all-databases> all.sql 2.导入 mysql-u root -p123456 < "D:\MySQL 5.5\bin\all.sql" 二、导出导入指定数据库的数据 1.导出 mysqldump-u root -p123456test> test.sql 2....转载 2021-10-12 17:02:42 · 356 阅读 · 0 评论 -
mysql 除法和四舍五入
一、除法:1、set d = 1/2; 结果为:d=1。 set d = 1/2.01; 结果为:d=0; "/"除法形式进行四舍五入处理2、set d = 1 div 2;结果为:d=0。整除,结果为商,不进行四舍五入处理。二、对某个值进行取整处理函数 说明 FLOOR(X) 返回不大于X的最大整数。 CEIL(X)、CEILING(X) 返回不小于X的最小整数。 TRUNCATE(X,D) 返回数值X保留到小数点后...原创 2021-10-12 13:40:37 · 6527 阅读 · 0 评论 -
MySQL查看存储过程
创建好存储过程后,用户可以通过 SHOW ATATUS 语句来查看存储过程的状态,也可以通过 SHOW CREATE 语句来查看存储过程的定义。本节主要讲解查看存储过程的状态和定义的方法。查看存储过程的状态MySQL 中可以通过 SHOW STATUS 语句查看存储过程的状态,其基本语法形式如下:SHOW PROCEDURE STATUS LIKE 存储过程名;LIKE 存储过程名用来匹配存储过程的名称,LIKE 不能省略。实例 1创建数据表 studentinfo,SQL 语句如下转载 2021-08-23 14:34:38 · 1428 阅读 · 0 评论 -
mysql查看存储过程函数
查询数据库中的存储过程和函数select `name` from mysql.proc where db = 'xx' and `type` = 'PROCEDURE'//存储过程select `name` from mysql.proc where db = 'xx' and `type` = 'FUNCTION'//函数 show procedurestatus; //存储过程 show function status;...转载 2021-08-23 14:33:08 · 513 阅读 · 0 评论 -
mysql同一数据库多个用户名_mysql数据库的基本操作
1.存储结构:数据库database 表table 数据data;2.SQL(Structured Query Language,结构化查询语言)语言:和数据库交互的语言,进行数据库管理的语言。库的操作3.查询所有数据库:show databases;4.创建数据库 create database 库名 character set 字符集(utf8或gbk)5.查看创建的数据库:show create database 库名;6.删除数据库:drop databa...转载 2021-08-23 14:26:18 · 1403 阅读 · 0 评论 -
在Mysql中如何显示所有用户?
这是一个mysql初学者经常问到的一个问题,今天我们就带大家看看是如何在Mysql中显示所有用户的。通常我们在mysql中使用SHOW DATABASES可以显示所有的数据库,SHOW TABLES将会显示所有的数据表,那么你是不是会猜测显示所有用户的命令是SHOW USERS呢?不不不,并不是的,现在让我们一起来看看如何显示所有用户吧。在Mysql中显示所有用户1.登录数据库首先,你需要使用如下命令登录到数据库,注意,必须是root用户哦~## mysql -u root -p2.查转载 2021-08-23 14:24:06 · 3518 阅读 · 0 评论 -
MySQL导出数据库、数据库表结构、存储过程及函数【用】
一、导出数据库 我的mysql安装目录是D:\Program Files\MySQL\MySQL Server 5.5\bin\,导出文件预计放在D:\sql\ 在mysql的安装目录执行命令: mysqldump -hhostname -uusername -ppassword databasename > d:\sql\databasename.sql在mysql5.7的时候报出一个警告,但是数据导出成功:现在换一种方式解决上述问题:创建一...转载 2021-08-23 10:37:01 · 3298 阅读 · 0 评论