i want to change table character set from 'utf8' to 'utf8mb4'
but each column has own character set setting(utf8)
so i need to change column character set to 'Table Default', but locking is the problem
help me to change column character set without table locking
there is over 100,000,000 rows in table
(MySQL 5.7.19 AWS RDS) how to change table column character set without locking
1.8k views Asked by user5013462 At
1
There are 1 answers
Related Questions in MYSQL
- How to Retrieve Data from an MySQL Database and Display it in a GUI?
- How to change woocomerce or full wordpress currency with value from USD to AUD
- window.location.href redirects but is causing problems on the webpage
- Error: local variable 'bramka' referenced before assignment
- Products aren't displayed after fetching data from mysql db (node.js & express)
- status table for all entries (even in different dates) in database changing value when all checkboxes are checked
- Can't Fix Mariadb & Mysql ERROR 2002 (HY000): Can't connect to local server through socket '/tmp/mysql.sock' (2) On MacOs
- Express Mysql getting max ID from table not working cought in a promise
- failed to upload a table from sql file
- Update a MySQL row depending on the ID in Google Sheets Apps Script
- Use row values from another table to select them as columns and establish relations between them (pivot table)
- SQL: Generate combination table based on source and destination column from same table
- How to display the column names which have only unique non-null values in MySQL table?
- mysql query takes too long because of wrong indexes usage
- Multitable joining in Sql
Related Questions in COLLATION
- django migrate from CIEmailField to collation
- is there what are the collation is used for accept emoji in database
- WordPress database error Illegal mix of collations utf8mb3_general_ci,IMPLICIT and utf8mb4_unicode_520_ci,COERCIBLE
- Binary comparison of strings with SQL Server
- What should collator do exactly?
- Is there a MySql collation that sorts Hungarian characters as per the Hungarian language rules?
- Collate Latin1_General_CI_AI equivalent in DB2
- How to call MySQL 8 stored procedure with several named parameters?
- How to change the collation of user-defined table types
- Inconsistent sorting results
- EF Core Case Sensitive Primary Keys
- duplicate key was found for the object name 'dbo.syscolpars'
- php array sorting with national signs and lowercase and uppercase letters
- How to detect in PHP that pensé is the same as pense
- How add more items into collation menu in pgAdmin 4?
Related Questions in TABLE-LOCK
- "SET LOCAL can only be used in transaction blocks" warning in PostgreSQL
- SQL Server table data deletion while insertion is in progress in another session
- How to initiate tables lock for stored procedure in Azure Synapse Analytics?
- How to remove a lock from a table in a Synapse Dedicated Pool?
- Temporal Table and Table locks
- locking the same table with different aliases
- SQL Server - 2 sec inserts and 5 min archiving - How to avoid table locks?
- innodb full table lock during simple insert
- (MySQL 5.7.19 AWS RDS) how to change table column character set without locking
- lock issue on tables due to triggers
- Laravel database lock table in concurrent request
- SQL Server: lock table during entire stored procedure
- Is this insert safe?
- Lock tables in long stored procedure in Oracle
- What is a proper way to perform a mysql transaction across different php files under the use of ajax or it is not possible?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
"Character set" is the encoding of the characters in bytes.
"Collation" is how to sort characters.
An
INDEXon aVARCHARis sorted by its collation, so changing the collation of a column requires rebuilding an index -- a non-trivial operation.The difference between utf8 and utf8mb4 is relatively minor, but I don't think MySQL (hence RDS) has made a special case of that.
ALTER TABLE t CONVERT TO utf8mb4;sounds like the operation that you desire. That requiresALGORITHM=COPY, so it is 'locking'.Look into
pt-online-schema-changeandgh-ostas a way of altering a table, even when it needs to "copy". These are essentially non-blocking. However, I do not know if they can be used with RDS. Also, because ofJOINsand other cases where one table may need to be consistent with another, those tools may not be practical.Another approach... Add another column(s); change your code to use both the old and new column(s). Meanwhile, gradually copy the old values to the new column(s); when this is finished, change your code again -- this time to use the new column(s) instead of the old. At some later date, worry about dropping the dead column(s).
Recent versions of MySQL have made significant changes in the speed of
ALTER, so be sure to study what version RDS is derived from. In 5.6,ADD COLUMNcan useALGORITHM=INPLACE; in 8.0,ALGORITHM=INSTANT. I think either of those is non-"locking" for your purposes. (DROP COLUMNis not cheap; the issues withJOINand rebuilding indexes are still up in the air.)If you try one of these techniques, I strongly recommend you build a table with at least a million rows and try out all the steps (alter add, join, recreate index, alter drop column, etc) to verify what parts are "fast enough" and/or "non-locking".